2013-01-12 168 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' –