起订量引发事件参数计数不匹配

问题描述 投票:0回答:2

我有一个界面,其中有一个我想在模拟中触发的事件:

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:参数计数不匹配。

我做错了什么?

events mocking moq
2个回答
4
投票

我忘记了“发件人”

gps.Raise(x => x.GpsLocationUpdated += (sender, e) => { }, this, new GpsLocation(0, 0));

0
投票

如果这对其他人有帮助,我在不同的场景中遇到了“参数计数不匹配”问题。我使用以下语法引发事件:

_myMock.Raise(o => o.MyEvent += null, new FoobarEventArgs());

事实证明,您在此处指定的事件参数类必须继承自

EventArgs
,而我的不是。将课程更改为以下内容解决了我的问题:

public class FoobarEventArgs : EventArgs
...
© www.soinside.com 2019 - 2024. All rights reserved.