我是新來測試驅動開發,我想測試我的登錄API,但我似乎無法完全理解如何實現與數據庫測試的,哪些是做的正確方法如何測試登錄API的NodeJS ?採用摩卡和柴
採用摩卡和柴
回答
首先,我也沒有這個主題的專家,但我一直在使用這種方法相當長的一段時間。如果有人發現我寫的內容有誤或有些誤導,請糾正我。我對評論家和意見非常開放。
,顧名思義,TDD方法需要您實施之前編寫測試。基本上,你寫測試,看它失敗,寫實現並重復,直到測試通過。
如果使用的是快遞,你可能想使用supertest
模塊。他們使用它的方式與superagent
類似。您可以通過運行
npm install supertest --save-dev
我將告訴你如何與摩卡和薛寶釵使用一個非常簡單的例子安裝。
所以這裏的快遞應用的一個例子:
// file: app.js
const express = require('express');
const app = express();
// your middlewares setup goes here
const server = app.listen(8000,() => {
console.log('Server is listening on port 8000');
});
module.exports = app;
而這裏的登錄API的例子測試用例:
// file: test/api.js
const request = require('supertest');
const app = require('../app');
const expect = require('chai').expect;
describe('Login API', function() {
it('Should success if credential is valid', function(done) {
request(app)
.post('/api/v1/login')
.set('Accept', 'application/json')
.set('Content-Type', 'application/json')
.send({ username: 'username', password: 'password' })
.expect(200)
.expect('Content-Type', /json/)
.expect(function(response) {
expect(response.body).not.to.be.empty;
expect(response.body).to.be.an('object');
})
.end(done);
});
});
您可以使用此命令
node_modules/mocha/bin/mocha test/**/*.js
運行
上面的示例假定您將使用POST方法在/ api/v1/login路徑上實現登錄API。它還假定您將接收並以json格式回覆數據。
的例子測試用例做些什麼,它試圖發送一個POST請求/ API/V1 /數據如下登錄:
{
username: 'username',
password: 'password'
}
然後,它希望你的API將與200響應代碼響應如下圖所示:
.expect(200)
如果接收到的代碼爲200以外的代碼,則測試將失敗。
然後,期待您迴應的Content-Type
是application/json
。如果期望不符合現實,測試也將失敗。
這下面的代碼:
.expect(function(response) {
expect(response.body).not.to.be.empty;
expect(response.body).to.be.an('object');
})
它會檢查您的服務器的響應。如上所示,您可以在函數體內使用chai的expect
。您可能會注意到supertest也提供了expect
方法。但是,同時使用supertest期望和chai期望的方式是不同的。
最後,調用end
函數與done
回調,以便測試用例可以正常運行。
您可能要檢查supertest文檔,以獲取有關如何使用它的更多細節。
建立數據庫連接測試
之前,如果你需要保持運行的所有測試用例之前數據庫連接,這裏的想法:
創建test
目錄內的另一個文件。例如,database_helper.js
。然後,寫下面的代碼:
before(function(done) {
// write database connection code here
// call done when the connection is established
});
我已經嘗試過與貓鼬之前,它爲我工作。
我希望有幫助。
增加一些想法:我ususally在每次測試之前用特定數據初始化數據庫。你可以使用'''beforeEach(function(done){});'''。 –
我正面臨以下錯誤https://scontent-sit4-1.xx.fbcdn.net/v/t34.0-12/17821101_1469610449726804_1117021897_n.png?oh=0faa94eb2e5a915d27ab03017eda40e2&oe=58EADD80 –
@RizwanPatel我無法打開鏈接,但我編輯了答案。我沒有注意到這個錯誤,謝謝! – winter
- 1. 用摩卡和柴測試
- 2. 摩卡和柴支持
- 3. 錯誤而測試用摩卡和柴
- 4. AngularJS,摩卡,柴:有承諾
- 5. 柴/摩卡全球/本地
- 6. 摩卡和柴承諾超時
- 7. 測試角度與摩卡和柴
- 8. 存根採用摩卡
- 9. 柴,摩卡:確定應該斷言
- 10. 摩卡柴斷言貌似忽略
- 11. 摩卡/柴:如何測試對象
- 12. Nodejs - 摩卡,柴多個異步測試
- 13. 摩卡/柴測試意外令牌=>
- 14. 如何使用Selenium使用的是Node.js和摩卡柴
- 15. 測試與節點,摩卡和柴(應該/ BDD語法)
- 16. 測試js承諾與摩卡,柴,chaiAsPromised和Sinon
- 17. 摩卡和柴失敗insde一個承諾
- 18. 摩卡/柴 - 測試具體設置和拆除
- 19. 摩卡和柴,我該如何模擬預期結果?
- 20. 摩卡和柴在瀏覽器中的異步測試
- 21. 異步測試 - 摩卡和柴 - 確保done()回調被稱爲
- 22. 加載數據庫進行測試與摩卡和柴
- 23. 陣營採用摩卡與興農
- 24. 採用摩卡與打字稿路徑
- 25. 如何測試採用摩卡
- 26. 摩卡和JSCover
- 27. 功能現場測試採用摩卡和灣仔的NodeJS
- 28. 摩卡/柴to.not.throw(類型錯誤)奇怪的行爲
- 29. 摩卡/柴:測試精確投擲錯誤結果
- 30. '期望'陳述失敗時的摩卡柴超時錯誤
你在用什麼框架? – winter
我正在使用express和sequelize(CLI)作爲ORM。 –
哎呀,對不清楚的問題抱歉。我的意思是,你使用的是什麼樣的web框架? – winter