2014-01-22 106 views

回答

2

我不認爲Nodeunit具有這種內置的功能,但許多人使用Grunt來處理這些任務。

http://gruntjs.com/

1

是,Nodeunit有setUp()tearDown()功能總是前後測試運行。您可以使用setUp()啓動服務器這樣的:

var server = require("path/to/server.js"); 

exports.setUp = function(callback) { 
    server.start(8080, function() { 
     callback(); 
    }); 
}; 

// run your tests here, setUp will be called before each of them 

這是假設在server.js您有:test.done()被調用後

exports.start = function() { 
    // start server here 
} 

tearDown()函數運行。

對於這樣的一個例子,看看在這裏的行動:https://github.com/jamesshore/Lessons-Learned-Integration-Testing-Node/blob/master/src/_server_test.js

的文檔是在這裏:https://github.com/caolan/nodeunit#groups-setup-and-teardown

+3

應作出更明確的,但在聯繫,我想要做的是有一個所有測試,而不是每次測試之前成立。 –

+0

啊我明白了。對此感到抱歉。正如Brad所說,Grunt是一個不錯的選擇。 – tfogo

2

由於使用nodeunit您的測試套件只是節點模塊,你可以採取封閉的優勢全球安裝/拆卸(僅針對該測試套件):

var myServer = require('./myservermodule'); 

var testsRun = 0; 
var testsExpected = 3; 

function startTest(test) { 
    test._reallyDone = test.done; 
    test.done = function() { 
     ++testsRun; 
     test._reallyDone(); 
    }; 
} 

module.exports = { 
    'setUp' : function(cb) { 
     if (!myServer.server) myServer.start(cb); 
     else cb(); 
    }, 
    'tearDown' : function(cb) { 
     console.log("Tests run: " + testsRun + "/" + testsExpected); 
     if (testsRun===testsExpected) myServer.stop(cb); 
     else cb(); 
    }, 
    'sometest1' : function(test) { 
     startTest(test); 
     test.expect(1); 
     test.ok(true); 
     test.done(); 
    }, 
    'sometest2' : function(test) { 
     startTest(test); 
     test.expect(1); 
     test.ok(false); 
     test.done(); 
    }, 
    'sometest3' : function(test) { 
     startTest(test); 
     test.expect(1); 
     test.ok(true); 
     test.done(); 
    } 
}; 
0

有兩種方法可以做到這一點:

  1. nodeunit測試文件中的所有測試都按順序同步運行。您可以在第一次測試中放置該組測試的設置代碼,然後在最後一次測試中放棄該設置代碼。

  2. 如果你想更正式地做到這一點,並且如果你不想爲單元測試設置Grunt,還有一個叫做「nodeunit-async」的模塊,它可以讓你運行全局設置和拆卸在你所有的測試之前和之後。在一組測試之前和之後,您可以運行全局設置並拆除一次。

下面是nodeunit-異步導語:

運行異步nodeunit測試的輕量級封裝。當您希望跨多個文件的每個測試運行常用全局設置或拆卸功能時,以及/或者夾具設置或拆卸功能在所有測試之前和之後運行一次特別有用。

專爲使用異步的自動和瀑布方法編寫的單元測試而設計。

https://github.com/Zugwalt/nodeunit-async

相關問題