我正在使用Mocha和Chai来测试我的Node / Express API,我无法弄清楚为什么测试没有到达.end()
以下是测试:
it('should authenticate successfully with user credentials', function (done) {
agent
.post('/login')
.set('Content-Type', 'application/x-www-form-urlencoded')
.send({ 'username': 'username', 'password': 'password'})
.end(function (err, res) {
console.log(res);
console.log('***************************Authenticated*********************************************');
expect(res).to.have.status(200);
});
done();
});
这是我正在打的路线:
app.post('/login', passport.authenticate('ldapauth', { successRedirect: '/' }));
我认为我的问题可能是因为没有正式的回复,而是重定向,但我不知道如何处理它。
答案 0 :(得分:3)
解决方案最终将done()回调移动到我的.end()方法中。谢谢@robertklep
答案 1 :(得分:1)
如果您正在测试异步方法int mocha,则应在回调函数中调用 call 方法,如下所示。
it('should authenticate successfully with user credentials', function (done) {
agent
.post('/login')
.set('Content-Type', 'application/x-www-form-urlencoded')
.send({ 'username': 'username', 'password': 'password'})
.end(function (err, res) {
console.log(res);
console.log('***************************Authenticated*********************************************');
expect(res).to.have.status(200);
done();
});
});
答案 2 :(得分:0)
我对柴的要求也有同样的问题。我想在转到另一个函数之前等待.end回调。但我不能使用摩卡咖啡,因为我正在使用黄瓜。我如何等待chai .end回调? 实际上,我想先登录(1),但不能正常工作
When('I submit with method {string}:', function (string, docString) {
chai.request(app)
.post(endpoint)
.send(docString)
.end(function (err, res) {
console.log(1)
response = res
})
});
Then('I recieved ok', function () {
console.log(2)
// expect(response.status).to.deep.equal(200)
});