Dart Async unittest

时间:2013-01-12 21:55:24

标签: dart

我正在尝试将以下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));
      }));
  });
}

这有效,但我希望测试失败,而不是在找不到文件时终止。这是如何完成的?

1 个答案:

答案 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库,看看如何让测试相互依赖。