Rebus Saga 单元测试 SagaFixture 事件处理程序未触发
Rebus Saga Unit Test SagaFixture Event Handlers Not Firing
我正在尝试使用 Rebus 对 saga 进行单元测试。一切都很顺利,直到我尝试使用 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()。我希望它能从我的测试中触发我定义的 "Delete" 事件处理程序,但事实并非如此。我在这里错过了什么。
当消息被处理时,您是否验证过您的处理程序代码确实被命中了?
如果是这样,您能否更新问题以将代码包含在您的处理程序中?
我正在尝试使用 Rebus 对 saga 进行单元测试。一切都很顺利,直到我尝试使用 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()。我希望它能从我的测试中触发我定义的 "Delete" 事件处理程序,但事实并非如此。我在这里错过了什么。
当消息被处理时,您是否验证过您的处理程序代码确实被命中了?
如果是这样,您能否更新问题以将代码包含在您的处理程序中?