考虑这个interace:起订量:如何使用非空发件人引发事件
public interface IFoo
{
event EventHandler SomethingHappened;
}
随着起订量,我使接口的模拟,现在我想提出一个事件:
var myMock = new Mock<IFoo>();
myMock.Raise(x => x.SomethingHappened += null, EventArgs.Empty);
这可以很好地工作,但问题在于订阅者希望发件人是事实(引发事件的IFoo),而不仅仅是空。
所以我想提出的事件是这样的:
myMock.Raise(x => x.SomethingHappened += myMock.Object, EventArgs.Empty);
但是编译器不会允许 - 它似乎只接受null
发件人。这是为什么?有没有办法做我真正想要的?
你什么错误?还有什么'SomethingHappened'的签名? – meJustAndrew
尝试 'myMock.Raise(x => x.SomethingHappened + = null,myMock.Object,EventArgs.Empty);'。 'x => x.SomethingHappened + = null',这会告诉Mock,哪个事件要提出,休息是如预期的参数 –