c# – 应该抛出单元测试失败,但是传奇处理程序代码确实会抛出一个不可恢复的异常

c# – 应该抛出单元测试失败,但是传奇处理程序代码确实会抛出一个不可恢复的异常,第1张

概述在我的测试构造函数中,我设置了我的传奇: public When_Testing_My_Saga(){ _mySaga = new MySaga { Data = new MySaga.MySagaData() };} 我的测试断言未接收重要数据会导致失败: [Fact]public void Not_Providing_Data_Should_Cau 在我的测试构造函数中,我设置了我的传奇: @H_403_7@

@H_403_7@

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] _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

@H_403_7@这真的很奇怪,因为如果我调试到处理程序,抛出线就会被击中.

@H_403_7@有什么线索可能会发生什么?

@H_403_7@PS:NoDataProvIDedFailure继承自Exception,但被称为失败,表明它不可恢复(不会触发重试).

解决方法 应该能够使用Do.ThrowAsync与Func< Task>在正确的线程上捕获异常以允许按预期执行测试. @H_403_7@

@H_403_7@

[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# – 应该抛出单元测试失败,但是传奇处理程序代码确实会抛出一个不可恢复的异常所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1215123.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-05
下一篇 2022-06-05

发表评论

登录后才能评论

评论列表(0条)

保存