1

次の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));
      }));
  });
}

これは機能しますが、ファイルが見つからない場合に終了するのではなく、テストを失敗させたいと思います。これはどのように達成されますか?

4

1 に答える 1

4

ファイルに対して 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))));
    }));
  });
}

そしてもちろん、これを 2 つのテストにすると、さらにきれいになります。「ファイルが存在する」と「ファイルが空でない」で、後者は最初のファイルがパスした場合にのみ実行されます。しかし、テストを相互に依存させる方法を確認するには、unittest ライブラリを十分に調べていません。

于 2013-01-13T11:36:45.513 に答える