我对单元测试相当陌生,但我正在尝试将它纳入我编写的任何新代码(包括错误修复)的开发过程中。
我正在使用 REST 客户端与 Highrise (37Signals) 进行通信。如何在不依赖外部依赖的情况下对其进行单元测试? (REST 服务)。
例如,我将有一个名为 GetPeople()
我想要单元测试的东西...
- 该方法返回帐户中的正确人数。
- 如果帐户中没有人,该方法返回 null
- 如果无法连接到服务,该方法将抛出异常。
我该怎么做才能测试该服务是否仍能正常运行。 I.E 人还有名字吗?我可以对此进行单元测试还是更多的是集成测试?
最佳答案
我假设您的代码现在直接使用 HttpWebRequest
和 HttpWebResponse
。如果是这种情况,请将所有出现的 HttpWebRequest
替换为 IRequest
并将 HttpWebResponse
替换为 IResponse
。定义这两个接口(interface)并暴露你需要的属性和方法,像这样:
public interface IRequest
{
IResponse GetResponse(string url);
IResponse GetResponse(string url, object data);
}
public interface IResponse
{
Stream GetStream();
}
那么就是将这些接口(interface)实现两次;一次用于实际应用程序(使用 HttpWebRequest
和 HttpWebResponse
来执行 HTTP 操作)一次用于测试(不使用 HTTP,而是可能写入控制台,一个日志或类似的东西)。
然后,在实例化你的客户端时,注入(inject)你想要的IRequest
的实现即可:
var realClient = new Client(new MyHttpRequest());
var testClient = new Client(new MyTestRequest());
关于c# - 对 REST 客户端进行单元测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7363021/