我正在尝试对Rebus的传奇进行单元测试。一切都进行得很顺利,直到我尝试使用SagaFixture上的事件来跟踪某些动作是否发生。
例如,我有以下代码:
[SetUp]
public void SetUp()
{
_mockSomeService = new Mock<ISomeService>();
_bus = new FakeBus();
_saga = new SomeSaga(_bus, _mockSomeService);
}
[Test]
public void SagaWillCompleteIfActionIsNoResponse()
{
_mockSomeService.Setup(x => x.GetSomeValue(
It.IsAny<int>())).Returns(SomeResonse.NoResponse.ToString());
using var fixture = SagaFixture.For(() => _saga);
var eventHandlerCalled = false;
fixture.Deleted += d => eventHandlerCalled = true;
fixture.Deliver(_message, deliveryTimeoutSeconds: _deliveryTimeoutSeconds);
Assert.That(eventHandlerCalled, Is.True);
}
现在在Saga中,处理程序中针对我要发送的消息类型的逻辑仅调用MarkAsComplete()。我希望从我的测试中触发我定义的“删除”事件处理程序,但事实并非如此。我在这里想念什么。
您是否已验证处理消息时实际上是否击中了处理程序代码?
如果是,您是否可以更新问题以将代码包含在处理程序中?