我是新来测试驱动开发,我想测试我的登录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