class A
{
event EventHandler Event1;
}
var mock = new Mock<A>();
Run Code Online (Sandbox Code Playgroud)
如何验证Event1被解雇?(不使用手动事件处理程序/触发标志)
Teo*_*gul 22
var mock = new Mock<IInterfaceWithEvent>();
mock.Raise(e => e.MyEvent += null, EventArgs.Empty);
mock.VerifyAll();
Run Code Online (Sandbox Code Playgroud)
或者如果您想确保该行为引发事件,您的设置应如下所示:
mock.Setup(foo => foo.Submit()).Raises(f => f.Sent += null, EventArgs.Empty);
// ...
mock.VerifyAll();
Run Code Online (Sandbox Code Playgroud)
Kal*_*son 22
我不确定我真的明白你为什么这么问.如果你有Mock<A>,那么你控制模拟,那么为什么要验证它已经做了你控制的事情?
也就是说,虽然我确实使用了Moq的加注/加注,但我仍然经常使用带有lambda的标志,我觉得相当干净:
bool eventWasDispatched = false; // yeah, it's the default
var a = new A();
a.Event1 += () => eventWasDispatched = true;
a.DoSomethingToFireEvent();
Assert.IsTrue(eventWasDispatched);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
13883 次 |
| 最近记录: |