在初始函数调用之后运行Jasmine测试
Run Jasmine tests after initial function calls
我正在为Node.js API编写Jasmine测试。我试图测试创建用户功能。测试看起来像这样:
describe('User test', function() {
describe('Post /api/saveUser'), function() {
it('saves a new user', function(done) {
request.post({url: 'http://website/api/saveUser', form:{email:testU.email, password:testU.password}, headers: {'authorization': adminU.jwt}}, function(err, res, body) {
expect(res.statusCode).toBe(200);
});
});
});
});
所以我需要验证规范中的管理用户(adminU),以获得在请求中传递的有效令牌。这是使用另一个端点完成的。
request.post({url: 'http://website/api/authenticate', form:{email:adminU.email, password: adminU.password}}, function(err, res, body) {
adminUser.jwt = JSON.parse(res.body).token;
});
但是我怎么把这些结合起来呢?如果我将身份验证代码放置在用户测试块上方,则在收到来自身份验证端点的响应之前运行用户测试。显而易见的选择是将用户测试封装在身份验证api的回调中,但是当我运行测试时,Jasmine实际上并没有运行它们。
在Jasmine规范中使用回调结果的最佳方式是什么?
您需要等待,直到验证调用的请求完成。
it('saves a new user', function(done) {
request.post({
url: 'http://website/api/authenticate',
form: {
email: adminU.email,
password: adminU.password
}
}, function(err, res, body) {
adminUser.jwt = JSON.parse(res.body).token;
request.post({
url: 'http://website/api/saveUser',
form: {
email: testU.email,
password: testU.password
},
headers: {
'authorization': adminU.jwt
}
}, function(err, res, body) {
expect(res.statusCode).toBe(200);
done();
});
});
});
如果您在多个测试中需要令牌,我建议将其放在before块中。如果您这样做,jasmine在开始测试之前运行一次,并且您不必在每个测试用例中进行验证调用。
before(function(done){
request.post({
url: 'http://website/api/authenticate',
form: {
email: adminU.email,
password: adminU.password
}
}, function(err, res, body) {
if(err) done(err);
adminUser.jwt = JSON.parse(res.body).token;
done();
});
});
另外,我推荐用于测试api的超测试。参见https://www.npmjs.com/package/supertest
相关文章:
- 在CoffeeScript文件上运行Jasmine测试时,对象未定义错误
- 如何在Jasmine中运行js函数
- 如何正确地包含jasmine节点测试运行程序的源文件
- 显示Jasmine运行的测试/期望的总数
- Jasmine 测试在测试运行中、Firefox/Chrome 之间以及检查器开/关时的结果不一致
- 在grunt-contrib-jasmine task中运行jasmine-jquery时出错
- 在开发过程中自动连续运行 Jasmine 测试
- Jasmine + Node.js用于服务器端单元测试.如何运行测试
- Webpack karma jasmine-requirejs在尝试运行测试时出错
- 如何在Microsoft Edge中运行Jasmine测试
- 创建一个新的maven目标来运行jasmine测试
- 在一次执行中多次运行Jasmine Spec
- 从命令行运行jasmine会在es6测试中引发模板错误
- 在Ubuntu上运行Jasmine测试.找不到页面
- 在使用Require的JavaScript上从Grunt运行Jasmine测试
- 运行jasmine和selenium-webdriver测试时出错
- 在运行SystemJS的CDN上用Angular 2运行Jasmine单元测试
- 在初始函数调用之后运行Jasmine测试
- 使用Gulp.js自动运行Jasmine测试
- 使用testatic可以同时运行Jasmine和Mocha进行测试