为什么这不起作用?
var validUri = 'postgresql://user:pwd@localhost:5432/testdb';
test('Query on closed connection.', () {
connect(validUri).then((conn) {
conn.close();
conn.query("select 'blah'").toList()
.then((_) => throw new Exception('Should not be reached.'))
.catchError(expectAsync1((err) {}));
});
});
test('Execute on closed connection.', () {
connect(validUri).then((conn) {
conn.close();
conn.execute("select 'blah'")
.then((_) => throw new Exception('Should not be reached.'))
.catchError(expectAsync1((err) {});
});
});
但是,如果更改最后一个catchError的回调分配:
(...)
test('Execute on closed connection.', () {
var cb = expectAsync1((e) {});
connect(validUri).then((conn) {
conn.close();
conn.execute("select 'blah'")
.then((_) => throw new Exception('Should not be reached.'))
.catchError(cb);
});
});
有用!
我很想阅读一个很好的解释,也许在 Dart 异步测试方面有一两课:-)
编辑:问题是第一个例子确实有效 - 它报告通过了!它不应该有。我假设 expectAsyncX() 必须在以后的测试中被回调。
这是测试框架的问题吗?这种类型的问题不应该被忽视。