2013-01-12 31 views
1

我想下面的Node.js测试转换成飞镖:飞镖异步单元测试

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

您可以使用File上的exists()方法。 File.exists()返回一个未来<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)))); 
    })); 
    }); 
} 

当然如果把它做成两个测试,这将会更漂亮。一个“文件存在”和一个“文件不空”,其中后者仅在第一个文件通过时运行。 但我一直没有足够的注意到单元测试库,看看如何使测试相互依赖。

+0

感谢您的支持。我还会关注如何在Dart中编写依赖测试。 – basheps

+0

我应该注意,如果您正在编写不需要在HTTP请求的上下文中执行的文件代码,那么还有'file.existsSync()'。也就是说,如果你不需要异步,你可以使用'existsSync' –