状态代码测试总是传递Sails.js和Mocha

时间:2016-03-07 12:07:43

标签: testing sails.js mocha

从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,但没有打印文本。

这是我的测试结果,包括之前的一些测试结果。

有什么想法吗?谢谢!

enter image description here

更新

如果我使用done();,则会引发错误done is not defined。我已经完成了:

request(sails.hooks.http.app)
    .post('/patient')
    .expect(301);
    done();

1 个答案:

答案 0 :(得分:0)

Angelos是对的:

“你必须将完成的函数参数添加到它(),就像这样”它('POST调用应该在成功时返回201,函数(完成){“ - Angelos Veglektsis 11小时前”

解决了这个问题。