なぜこれが機能しないのですか?
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);
});
});
できます!
私はこれについての素晴らしい説明を読みたいと思います、そしておそらくダート非同期テストのレッスンを1つか2つ持っています:-)
編集:問題は、最初の例が機能したことです-合格したと報告されました!あるべきではありません。後のテストでexpectAsyncX()がコールバックされたに違いないと思います。
これはテストフレームワークの問題ですか?この種の問題は黙って無視されるべきではありません。