想象一下这个类
public class Foo {
private Handler _h;
public Foo(Handler h)
{
_h = h;
}
public void Bar(int i)
{
_h.AsyncHandle(CalcOn(i));
}
private SomeResponse CalcOn(int i)
{
...;
}
}
在 Foo 测试中 Mo(q)cking Handler,我如何才能检查 Bar()
传递给 _h.AsyncHandle
的内容?
最佳答案
您可以使用 Mock.Callback 方法:
var mock = new Mock<Handler>();
SomeResponse result = null;
mock.Setup(h => h.AsyncHandle(It.IsAny<SomeResponse>()))
.Callback<SomeResponse>(r => result = r);
// do your test
new Foo(mock.Object).Bar(22);
Assert.NotNull(result);
如果你只想检查传入参数的一些简单的东西,你也可以直接这样做:
mock.Setup(h => h.AsyncHandle(It.Is<SomeResponse>(response => response != null)));
关于c# - Moq:如何获取传递给模拟服务方法的参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3269717/