Skip to main content
 首页 » 编程设计

c#之Untitesting/Moq 方法调用 webrequest

2024年01月28日24mate10pro

我想测试一个通过 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 
} 
}