Dart - 构造函数中异常的单元测试

时间:2015-04-21 20:25:09

标签: unit-testing dart

我在Dart(1.9.3)中编写了一个简单的项目,使用unittest库进行单元测试。我在检查构造函数是否抛出错误时遇到问题。这是我为此问题编写的示例代码:

class MyAwesomeClass {
    String theKey;

    MyAwesomeClass();

    MyAwesomeClass.fromMap(Map someMap) {
        if (!someMap.containsKey('the_key')) {
            throw new Exception('Invalid object format');
        }

        theKey = someMap['the key'];
    }
}

以下是单元测试:

test('when the object is in wrong format', () {
    Map objectMap = {};

    expect(new MyAwesomeClass.fromMap(objectMap), throws);
});

问题是测试失败,并显示以下消息:

Test failed: Caught Exception: Invalid object format

我做错了什么?是unittest中的错误还是我应该使用try..catch测试异常并检查是否已抛出异常?
谢谢大家!

1 个答案:

答案 0 :(得分:3)

您可以使用以下命令测试是否抛出异常:

    test('when the object is in wrong format', () {
       Map objectMap = {};

       expect(() => new MyAwesomeClass.fromMap(objectMap), throws);
    });

将第一个参数传递给引发异常的匿名函数。