Я провел некоторое время с этим вопросом, и решение, которое я использую в своем проекте:
Юнит-тест:
// Arrange
TestedObject.Setup(x => x.OnEvent1());
TestedObject.Setup(x => x.OnEvent2());
// Act
TestedObject.Object.SubscribeEvents();
TestedObject.Raise(x => x.Event1 += null);
TestedObject.Raise(x => x.Event2 += null);
// Assert
TestedObject.Verify(x => x.OnEvent1(), Times.Once());
TestedObject.Verify(x => x.OnEvent2(), Times.Once());
Метод испытания:
this.Event1 += OnEvent1;
this.Event2 += OnEvent2;
Итак, сначала вы должны смоделировать методы, которым вы будете назначать события, после того, как вы вызовете метод, который вы хотите проверить, и, наконец, вызвать все подписанные события. Если событие действительно подписано, вы можете проверить с помощью Moq, вызван ли назначенный метод.
GLHF!