我有一个界面,其中有一个我想在模拟中触发的事件:
public interface IGpsLocationSource
{
event EventHandler<GpsLocation> GpsLocationUpdated;
}
我的测试如下:
var gps = new Mock<IGpsLocationSource>();
gps.Raise(x => x.GpsLocationUpdated += (sender, e) => { }, new GpsLocation(0, 0));
我收到以下错误:
结果堆栈跟踪:
在 Moq.Mock
1.Raise(Action
1 eventExpression,Object[] args)
在 Test.cs:第 27 行
结果消息:System.Reflection.TargetParameterCountException:参数计数不匹配。
我做错了什么?
我忘记了“发件人”
gps.Raise(x => x.GpsLocationUpdated += (sender, e) => { }, this, new GpsLocation(0, 0));
如果这对其他人有帮助,我在不同的场景中遇到了“参数计数不匹配”问题。我使用以下语法引发事件:
_myMock.Raise(o => o.MyEvent += null, new FoobarEventArgs());
事实证明,您在此处指定的事件参数类必须继承自
EventArgs
,而我的不是。将课程更改为以下内容解决了我的问题:
public class FoobarEventArgs : EventArgs
...