public When_Testing_My_Saga(){ _mySaga = new MySaga { Data = new MySaga.MySagaData() };}@H_403_7@我的测试断言未接收重要数据会导致失败: @H_403_7@
[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); });}@H_403_7@sqlSaga中的实际代码: @H_403_7@
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 });}@H_403_7@引发预期的失败,但测试表明相反: @H_403_7@
@[email protected]@H_403_7@这真的很奇怪,因为如果我调试到处理程序,抛出线就会被击中. @H_403_7@有什么线索可能会发生什么? @H_403_7@PS:NoDataProvIDedFailure继承自Exception,但被称为失败,表明它不可恢复(不会触发重试).解决方法 应该能够使用Do.ThrowAsync与Func< Task>在正确的线程上捕获异常以允许按预期执行测试. @H_403_7@ @H_403_7@_mySaga.Handle(new
importantDataReadMessage { Reference = string.Empty,importantData =
null },context).ConfigureAwait(false);
should throw Service.Failures.NoDataProvIDedFailure
but dID not at Not_ProvIDing_Data_Should_Cause_A_Failure () in mypath\When_Testing_My_Saga.cs:line 77
[Fact]public async Task Not_ProvIDing_Data_Should_Cause_A_Failure() { //Arrange var context = new TestableMessageHandlerContext(); //Act Func<Task> act = () => _mySaga.Handle(new importDataReadMessage { importantData = null },context); //Assert await Should.ThrowAsync<NoDataProvIDedFailure>(act);}总结
以上是内存溢出为你收集整理的c# – 应该抛出单元测试失败,但是传奇处理程序代码确实会抛出一个不可恢复的异常全部内容,希望文章能够帮你解决c# – 应该抛出单元测试失败,但是传奇处理程序代码确实会抛出一个不可恢复的异常所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)