新的nodejs測試。測試沒有運行服務器的nodejs服務器代碼
我有一個運行一些複雜的服務器端邏輯的nodejs服務器,我正在爲該代碼構建一個單元測試運行器。我做不是想運行服務器並測試發送它的請求,因爲這並不公開所有模塊和功能,我想在服務器端測試。這將更像集成測試。我只想導入那些寫成AMD模塊的服務器端文件,並在單元測試中逐一調用它們的函數。
要做到這一點,最好的方法是什麼?
新的nodejs測試。測試沒有運行服務器的nodejs服務器代碼
我有一個運行一些複雜的服務器端邏輯的nodejs服務器,我正在爲該代碼構建一個單元測試運行器。我做不是想運行服務器並測試發送它的請求,因爲這並不公開所有模塊和功能,我想在服務器端測試。這將更像集成測試。我只想導入那些寫成AMD模塊的服務器端文件,並在單元測試中逐一調用它們的函數。
要做到這一點,最好的方法是什麼?
您將要開始爲您當前的項目安裝單元測試和斷言框架。那麼你也想添加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內的倉。
祝你好運,並希望這有助於。
感謝您的詳細解答。我實際上也在使用mochajs,但我在試圖在測試腳本或節點repl中需要AMD模塊時遇到了問題。是否需要('path/to/amd/module')'在節點中爲你工作? – yelsayed
目前沒有使用任何AMD風格的模塊,你有沒有看過可能通過r.js運行它? https://github.com/requirejs/r.js –
這就是我一直在尋找的,謝謝!如果你編輯答案添加這一點,我會接受它,因爲它是原始問題的一部分。 :) – yelsayed