【发布时间】:2014-01-09 07:34:54
【问题描述】:
我将 Prism 框架与 Moq 一起使用。我正在尝试验证 AlarmService 是否订阅了构造函数中的事件,但我收到了一个不支持的异常。
我还能如何验证这一点?
这是我的测试方法:
public void TestMethod()
{
var mockMachineDataService = new Mock<IMachineDataService<AlarmDto>>();
var mockAggregator = new Mock<IEventAggregator>();
var mockEvent = new Mock<MachineMessageReceivedEvent>();
mockAggregator.Setup(x => x.GetEvent<MachineMessageReceivedEvent>()).Returns(mockEvent.Object);
var alarmService = new AlarmService(mockAggregator.Object, mockMachineDataService.Object);
Assert.IsNotNull(alarmService);
mockAggregator.VerifyAll();
mockEvent.Verify(x => x.Subscribe(It.IsAny<Action<MachineMessage>>(), It.IsAny<ThreadOption>()));
}
当我运行它时,我得到以下失败:
System.NotSupportedException: Invalid verify on a non-virtual (overridable in VB) member: x => x.Subscribe(It.IsAny<Action`1>(), It.IsAny<ThreadOption>())
我确实查看了this 并将mockAggregator 和mockEvent 分开以获得上述代码,但它仍然失败。
【问题讨论】: