我想测试一个通过 Webrequest 发送文本的类,我如何使用 Moq 模拟 GetRequest 方法来测试 GetRequest?
public class Sender
public void Send(string Message)
{
...
WebRequest myReq = GetRequest(sParmeter);
}
protected WebRequest GetRequest(string URl)
{
return WebRequest.Create(URl);
}
}
请您参考如下方法:
对于这样的事情,简单的方法是将您的 WebRequest 实例及其操作移到接口(interface)中介后面。
例子:
public interface IWebRequestHandler
{
WebRequest GetRequest (string URI);
}
public class WebRequestHandler : IWebRequestHandler
{
public WebRequest GetRequest (string URI)
{
return WebRequest.Create(URl);
}
}
你的发送者类应该有一个 IWebRequestHandler 的可注入(inject)实例,你可以用 MOQ 模拟它,设置期望,验证它被调用以及你可能想要的任何其他东西。
public class Sender
{
public IWebRequestHandler Handler{get;set;}
public void Send(string Message)
{
Handler.GetRequest(new URI(Message));//call the method with right params, just an example
}
}
