请求 rest api 和 return 摩卡测试的响应值
request rest api and return response values for a mocha test
在流星应用程序中,我想测试一些休息功能,因此我需要做一些身份验证。
在我的测试用例中,我想 return 来自函数的一些授权数据:
const supertest = require('supertest');
function loginUser(auth) {
return function(done) {
request
.post('/users/login')
.send({
username: 'user'
password: '123',
})
.expect(200)
.end(onResponse);
function onResponse(err, res) {
auth.token = res.body.token;
return done();
}
};
}
在这个测试中:
it('auth test by helper function', function () {
let auth = {};
auth = loginUser(auth)(done);
//access auth settings here like:
//auth.token
});
onResponse
永远不会被调用,auth
总是 {}
我正在使用 supertest 请求 3.0.0 和 mocha 4.1.0 作为测试运行器(其余 api 是 simple:json-routes)
更新
似乎 return 'function(done)' 从未被调用过...
好的,我将呼叫固定到 auth = loginUser(auth)(done);
现在调用已完成,但调用后 auth
未定义
你的function loginUser(auth)
returns另一个函数。所以你应该像这样调用那个函数:
it('auth test by helper function', function (done) { // pass done so mocha knows it needs to wait for the response ...
let auth = {};
loginUser(auth)(function() {
//access auth settings here like:
//auth.token
done();
});
});
在流星应用程序中,我想测试一些休息功能,因此我需要做一些身份验证。
在我的测试用例中,我想 return 来自函数的一些授权数据:
const supertest = require('supertest');
function loginUser(auth) {
return function(done) {
request
.post('/users/login')
.send({
username: 'user'
password: '123',
})
.expect(200)
.end(onResponse);
function onResponse(err, res) {
auth.token = res.body.token;
return done();
}
};
}
在这个测试中:
it('auth test by helper function', function () {
let auth = {};
auth = loginUser(auth)(done);
//access auth settings here like:
//auth.token
});
onResponse
永远不会被调用,auth
总是 {}
我正在使用 supertest 请求 3.0.0 和 mocha 4.1.0 作为测试运行器(其余 api 是 simple:json-routes)
更新
似乎 return 'function(done)' 从未被调用过...
好的,我将呼叫固定到 auth = loginUser(auth)(done);
现在调用已完成,但调用后 auth
未定义
你的function loginUser(auth)
returns另一个函数。所以你应该像这样调用那个函数:
it('auth test by helper function', function (done) { // pass done so mocha knows it needs to wait for the response ...
let auth = {};
loginUser(auth)(function() {
//access auth settings here like:
//auth.token
done();
});
});