0

如果您通过 supertest 向sais 发出请求,则如果您返回错误,则响应会挂起。在这里,我们已经扬帆起航,并将将其作为针对实时数据库的集成测试运行。

var sails = require('sails').lift();
var request = require('supertest');
var app = sails.hooks.http.app;
describe('The creation of a model',function(){
    it('should not create a duplicate',function(done){

        var user = request.agent(app);
        user
            .post('/api/create')
            .end(function(err,res){

                //never gets here, your test will hang
                done();

            });

    });
});


//controller.js

module.exports = {
    // /api/create routes here
    create:function(req,res){

        var params = {
            name:"invalid"
        };
        SomeAction(params,function(err,results){

            if (err) {
                //the problem is here.
                return err;
            }
            res.json(results);

        });

    }

};
4

1 回答 1

0

如果您向sails 发出超测试请求并且该函数返回一个值,即。您不使用 res.send() 或 res.json() 它将挂起对超测的请求。这是正确的方法:

var sails = require('sails').lift();
var request = require('supertest');
var app = sails.hooks.http.app;
describe('The creation of a model',function(){
    it('should not create a duplicate',function(done){

        var user = request.agent(app);
        user
            .post('/api/create')
            .end(function(err,res){

                //never gets here, your test will hang
                done();

            });

    });
});


//controller.js

module.exports = {
    // /api/create routes here
    create:function(req,res){

        var params = {
            name:"invalid"
        };
        SomeAction(params,function(err,results){

            if (err) {
                //you need to send a response to the 
                res.json({
                  error:"an error occured"
                });
            }
            res.json(results);

        });

    }

};
于 2014-07-12T03:35:28.547 回答