我正在尝试练习TDD并做一些练习.有一个现有的服务部署在互联网上的公共RESTful api.对此api的每个请求都需要一些数据准备,如有效的请求字符串构造,一些加密,一些正文消息格式化等.我想使用TDD为此服务编写通用客户端.
我知道它不像StringCalculator kata那么简单,需要一些不同的方法.
我不知道如何开始.我想在不使用真实服务的情况下测试它,因此需要一些假的impl.编写一些假实现,将它部署在localhost并从我的测试中调用它会更好吗?或者也许模拟一个负责发送http请求的类?
我希望我的客户端使用如下:
public class ServiceClientTest {
@Test
public void testSendStoreRequest() {
ServiceClient client = new ServiceClient("app_key", "private_key")
ClientResponse response = client.sendStoreRequest(StorageType.NORMAL, "string_to_store");
assertEquals("200", response.getStatus());
}
}
Run Code Online (Sandbox Code Playgroud)
你能指点我如何开始这个吗?我应该自下而上并编写所有组件(用于创建请求字符串,加密等),然后在ServiceClient中使用它们,或者我应该从ServiceClient测试和实现自上而下和模拟开始?
您问题的理想解决方案似乎就是您开始描述的内容.你应该在项目中创建一个接口你自己,那将代表外部服务.
public interface CalculatorService {
int add(int a, int b);
}
Run Code Online (Sandbox Code Playgroud)
这将是您的测试边界.所有的UNIT和ACCEPTANCE测试都应该针对模拟或存根运行CalculatorService
.他们会很快.您可以这样做,因为您定义了该合同(该接口实际意味着什么).
稍后,您将拥有一个进入远程HTTP休息服务的实现:
class RemoteRestCalculator implements CalculatorService {
public int add(int a, int b) {
// call the remote service in here
}
}
Run Code Online (Sandbox Code Playgroud)
你需要测试这个合同(边界).因此,您将编写集成测试RemoteRestCalculator
.您还可以使用几个端到端测试运行应用程序RemoteRestCalculator
来测试接线等.
现在,回答你的问题,如何测试RemoteRestCalculator
?
RemoteRestCalculator
针对该实例编写针对该运行的测试.RemoteRestCalculator
针对该模拟器编写针对该运行的测试. 归档时间: |
|
查看次数: |
4148 次 |
最近记录: |