В моем конструкторе тестов я настроил сагу:
public When_Testing_My_Saga()
{
_mySaga = new MySaga
{
Data = new MySaga.MySagaData()
};
}
В моем тесте утверждается, что сбой происходит при получении важных данных:
[Fact]
public void Not_Providing_Data_Should_Cause_A_Failure()
{
var context = new TestableMessageHandlerContext();
Should.Throw<NoDataProvidedFailure>(() =>
{
_mySaga.Handle(new ImportDataReadMessage
{
ImportantData = null
}, context).ConfigureAwait(false);
});
}
Фактический код вSqlSaga:
public async Task Handle(ImportantDataReadMessage message, IMessageHandlerContext context)
{
if (message.ImportantData == null)
{
throw new NoDataProvidedFailure("Important data was not provided.");
}
await context.Send(Endpoints.MyEndpoint, new DoStuffWhenImportantDataProvided
{
Reference = message.Reference
});
}
Бросает ожидаемый сбой, но тест указывает на обратное:
Shouldly.ShouldAssertException _mySaga.Handle(new
ImportantDataReadMessage { Reference = string.Empty, ImportantData =
null }, context).ConfigureAwait(false);
должен вызвать Service.Failures.NoDataProvidedFailure, но не в Not_Providing_Data_Should_CauseA) в mypath \ When_Testing_My_Saga.cs: строка 77
Что действительно странно, потому что, если я отлаживаю в обработчике, строка броска ударит.
Любые подсказки к тому, что может бытьпроисходит?
PS: NoDataProvidedFailure наследует от Exception, но называется ошибкой, указывающей на то, что она не может быть восстановлена (не вызывает повторную попытку).