BZi*_*ink 11 c# rest unit-testing mocking
我对单元测试相当新,但我正在尝试将其合并到我编写的任何新代码(包括错误修复)的开发过程中.
我正在使用REST客户端与Highrise(37Signals)进行通信.如何在不依赖外部依赖的情况下对此进行单元测试?(REST服务).
例如,我将有一个名为的方法 GetPeople()
我想要进行单元测试的事情......
我该怎么做才能测试该服务的功能是否相同.IE用户还有名字吗?我可以对此进行单元测试,还是更多的集成测试?
我假设您的代码现在直接使用HttpWebRequestand 。HttpWebResponse如果是这种情况,请将所有出现的withHttpWebRequest和IRequest替换为。定义这两个接口并公开您需要的属性和方法,如下所示:HttpWebResponseIResponse
public interface IRequest
{
IResponse GetResponse(string url);
IResponse GetResponse(string url, object data);
}
public interface IResponse
{
Stream GetStream();
}
Run Code Online (Sandbox Code Playgroud)
那么只要实现这些接口两次就可以了;一次用于实际应用程序(使用HttpWebRequest并HttpWebResponse执行 HTTP 内容),一次用于测试(不使用 HTTP,但可能写入控制台、日志或类似内容)。
然后,在实例化您的客户端时,只需注入IRequest您想要的实现:
var realClient = new Client(new MyHttpRequest());
var testClient = new Client(new MyTestRequest());
Run Code Online (Sandbox Code Playgroud)