下面的using
会访问一个我不想真正访问的外部资源。我想测试someResult
以及使用它的代码,但每次运行单元测试时,这段代码仍会尝试访问真实的Web服务。如何使用Moq来模拟对Web服务的真实调用,而不是模拟using
内部的其余代码?
public IMyInterface.SomeMethod()
{
// hits a web service
using ( mySoapClient client = new mySoapClient() )
{
var someResult = client.DoSomething();
...
...
}
}
[TestMethod()]
public void SomeMethodTest()
{
IMyInterface target = new MyInterface();
target.SomeMethod();
// Assert....
}
Func<T>
是一个内置类型,它保存了一个委托(指向方法的“指针”),该委托不接受任何参数并返回泛型类型的对象(在您的情况下,您想要肥皂客户端)。请阅读有关 C# 中委托传递的内容;这是语言和框架非常强大的功能。 - KeithS