我正在使用Prism框架和Moq一起使用。我試圖驗證AlarmService是否在構造函數中訂閱了一個事件,但我收到了一個不支持的異常。使用Moq驗證棱鏡事件訂閱失敗
我還能如何驗證?
這是我的TestMethod的:
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得到上面的代碼,但它仍然失敗。
這確實不是虛擬的,令我困惑的是取消訂閱方法是虛擬的,但訂閱方法不是。 – uncletall
我更新了提及Msft Fakes框架的答案。 –
謝謝,我添加了一個工作解決方案。然而,我並不喜歡它,因爲我正在測試Subscribe方法的內部實現方式。 – uncletall