2017-05-04 195 views
0

新的nodejs測試。測試沒有運行服務器的nod​​ejs服務器代碼

我有一個運行一些複雜的服務器端邏輯的nodejs服務器,我正在爲該代碼構建一個單元測試運行器。我做不是想運行服務器並測試發送它的請求,因爲這並不公開所有模塊和功能,我想在服務器端測試。這將更像集成測試。我只想導入那些寫成AMD模塊的服務器端文件,並在單元測試中逐一調用它們的函數。

要做到這一點,最好的方法是什麼?

回答

1

您將要開始爲您當前的項目安裝單元測試和斷言框架。那麼你也想添加requirejs(r.js)。

我們目前使用mochajs進行單元測試,使用should作爲斷言庫。兩者都對測試Node.js有很大的採用和功能支持。

npm install mochajs shouldjs requirejs --save-dev 

這會將三個軟件包添加到您的本地node_modules中,並將它們保存在您的package.json的devDependencies中。

繼續前進,安裝在您的項目單元測試目錄,並創建一個新的測試文件,[your_module_name] _test.js:

const should = require('should'), 
     foo = require('foo'); 

describe('foo',() => { 
    it('returns the letter a',() => { 
    foo().should.eql('a'); 
    }); 
}); 

在測試文件,你會想要求被測模塊然後照常進行單元測試。

您可以再通過r.js運行測試

./node_modules/requirejs/bin/r.js [your_test_dir]/[your_module_name]_test.js 

您也可以在全球安裝mochajs,然後只需運行摩卡命令,而不是使用本地node_modules內的倉。

祝你好運,並希望這有助於。

+0

感謝您的詳細解答。我實際上也在使用mochajs,但我在試圖在測試腳本或節點repl中需要AMD模塊時遇到了問題。是否需要('path/to/amd/module')'在節點中爲你工作? – yelsayed

+0

目前沒有使用任何AMD風格的模塊,你有沒有看過可能通過r.js運行它? https://github.com/requirejs/r.js –

+0

這就是我一直在尋找的,謝謝!如果你編輯答案添加這一點,我會接受它,因爲它是原始問題的一部分。 :) – yelsayed