从Sails中的Mocha测试开始,我写的每个测试似乎都工作正常,除非我尝试验证HTTP答案的状态代码。对于我的测试:
var request = require('supertest'),
assert = require('assert'),
Patient = require('../api/controllers/PatientController.js');
describe('Patients module', function(){
describe('\n##Create a patient (POST)\n', function(){
it('POST call should return 201 when success', function(){
request(sails.hooks.http.app)
.post('/patient')
.expect(301)
.end(function(err, res){
if (err) return done(err);
done();
});
});
})
基于控制器文件:
module.exports = {
create: function(req,res,next) {
var params = req.params.all();
var patientId = this.createPatientId(123);
Patient.create({
_id: patientId,
name: 'TestName'
}).exec(function createCB(err, updated){
console.log('created');
if (err) return next(err);
res.status(201);
res.json(patient);
});
},
};
无论在测试中还是在控制器中写入什么状态编号,测试总是通过。请注意,在我的代码中,测试需要301,而不是201,所以应该失败。我还在我的控制器中编写了console.log,但没有打印文本。
这是我的测试结果,包括之前的一些测试结果。
有什么想法吗?谢谢!
如果我使用done();
,则会引发错误done is not defined
。我已经完成了:
request(sails.hooks.http.app)
.post('/patient')
.expect(301);
done();
答案 0 :(得分:0)
Angelos是对的:
“你必须将完成的函数参数添加到它(),就像这样”它('POST调用应该在成功时返回201,函数(完成){“ - Angelos Veglektsis 11小时前”
解决了这个问题。