【发布时间】:2017-02-19 03:28:27
【问题描述】:
考虑这个交互:
public interface IFoo
{
event EventHandler SomethingHappened;
}
使用 Moq,我模拟了界面,现在我想引发事件:
var myMock = new Mock<IFoo>();
myMock.Raise(x => x.SomethingHappened += null, EventArgs.Empty );
这很好用,但问题是订阅者希望 sender 是某个东西(实际上是引发事件的 IFoo),而不仅仅是 null。
因此我想像这样提出这个事件:
myMock.Raise(x => x.SomethingHappened += myMock.Object, EventArgs.Empty );
但编译器不允许这样做 - 它似乎只接受 null 作为发送者。这是为什么?有没有办法做我真正想做的事?
【问题讨论】:
-
你得到什么错误?还有
SomethingHappened的签名是什么? -
试试
myMock.Raise(x=>x.SomethingHappened += null,myMock.Object, EventArgs.Empty );。x=>x.SomethingHappened += null,这将告诉 Mock,要引发哪个事件,rest 是预期的参数