Flutter: Test that a specific exception is thrown

后端 未结 4 426
攒了一身酷
攒了一身酷 2021-01-07 23:07

in short, throwsA(anything) does not suffice for me while unit testing in dart. How to I test for a specific error message or type?

Her

相关标签:
4条回答
  • 2021-01-07 23:49

    In case anyone wants to test with an async function like I had to do all you need to do is add async keyword in the expect, bearing in mind that the lookupOrderDetails is an async function:

    expect(() **async** => **await** operations.lookupOrderDetails(), throwsA(const TypeMatcher<MyCustErr>()));
    
    expect(() **async** => **await** operations.lookupOrderDetails(), isInstanceOf<MyCustErr>()));
    

    It still uses Gunter's answer which is very good!

    0 讨论(0)
  • 2021-01-07 23:53

    First import correct package 'package:matcher/matcher.dart';

    expect(() => yourOperation.yourMethod(),
          throwsA(const TypeMatcher<YourException>()));
    
    0 讨论(0)
  • 2021-01-07 23:59

    After `TypeMatcher<>' has been deprecated in Flutter 1.12.1 I found this to work:

    expect(() => operations.lookupOrderDetails(), throwsA(isInstanceOf<MyCustErr>()));
    
    0 讨论(0)
  • 2021-01-08 00:08

    This should do what you want:

    expect(() => operations.lookupOrderDetails(), throwsA(const TypeMatcher<MyCustErr>()));
    
    expect(() => operations.lookupOrderDetails(), isInstanceOf<MyCustErr>());
    

    if you just want to check for exception check this answer:

    0 讨论(0)
提交回复
热议问题