我正在尝试将以下Node.js测试转换为Dart:
var fs = require('fs');
exports.asyncTest = function(test){
fs.stat('test.txt', function(err, stats) {
test.expect(2);
test.strictEqual(err, null);
test.notStrictEqual(stats.size, 0);
test.done();
})
};
到目前为止,我有:
import 'package:unittest/unittest.dart';
import 'dart:io';
main() {
test('File is not empty', () {
var stats = new File('test.txt').length().then(
expectAsync1((v) {
expect(v, isNot(0));
}));
});
}
这有效,但我希望测试失败,而不是在找不到文件时终止。这是如何完成的?
答案 0 :(得分:4)
您可以在File上使用exists()方法。 File.exists()返回Future< bool>,所以做这样的事情。
main(){
test('File Exists, and is not empty', () {
var f = new File('test.txt');
f.exists().then(expectAsync1((v) {
expect(v, true);
if (v)
f.length().then(expectAsync1((l) => expect(l, isNot(0))));
}));
});
}
当然,如果进行两次测试,这将会更漂亮。 “文件存在”和“非空文件”,后者仅在第一个文件通过时运行。 但是我还没有充分考虑unittest库,看看如何让测试相互依赖。