Lir*_*ess 33 c# delegates unit-testing moq
我得到了一个通过参数得到代表的类.这个类调用该委托,我想用Moq对它进行单元测试.我如何验证这个方法被调用?
示例类:
public delegate void Foo(int number);
public class A
{
int a = 5;
public A(Foo myFoo)
{
myFoo(a);
}
}
Run Code Online (Sandbox Code Playgroud)
我想检查Foo是否被调用.谢谢.
Luk*_*oid 51
在此提交时, Moq现在支持代理模拟,对于您的情况,您可以这样做:
var fooMock = new Mock<Foo>();
var a = new A(fooMock.Object);
Run Code Online (Sandbox Code Playgroud)
然后,您可以验证是否已调用委托:
fooMock.Verify(f => f(5), Times.Once);
Run Code Online (Sandbox Code Playgroud)
要么:
fooMock.Verify(f => f(It.IsAny<int>()), Times.Once);
Run Code Online (Sandbox Code Playgroud)
Ufu*_*arı 32
那么使用匿名函数呢?它可以像内联模拟一样,你不需要一个模拟框架.
bool isDelegateCalled = false;
var a = new A(a => { isDelegateCalled = true});
//do something
Assert.True(isDelegateCalled);
Run Code Online (Sandbox Code Playgroud)