2016-01-22 108 views
0

我会寻求一些帮助。我正在尝试制定一种方法,可以调用特定路由触发时调用的单元测试&。 createFromRoute()工作得很好。如果我直接调用create(),则出现错误。Sails.js:从单元测试调用控制器方法

用户控制器

module.exports = { 

    /** 
    * UserController.createFromRoute() 
    */ 
    createFromRoute: function(req, res, next) { 
    console.log('>>>', 'Routing to UserController.createFromRoute()'); 

    // Calling create method 
    this.create(req.params.all()) 
     .then(function(user) { 
     res.json(user); 
     }) 
     .fail(res.badRequest); 
    }, 

    create: function(data) { 
    console.log('>>>', 'Entering create() function.'); 
    return User.create(data); 
    }, 

}; 

样品测试

var UserController = require('../../api/controllers/UserController.js'); 

describe('testing', function() { 
    data = {}; 
    UserController.create(data); 
}); 

错误

>>> Entering create() function. 
path/api/controllers/UserController.js:28 
    return User.create(data); 
     ^
ReferenceError: User is not defined 

回答

0

全局变量你解除应用程序后,才User将可用。你有launched sails in a bootstrap file吗?

// /test/bootstrap.test.js 
var Sails = require('sails'), 
    sails; 

before(function(done) { 

    // Increase the Mocha timeout so that Sails has enough time to lift. 
    this.timeout(5000); 

    Sails.lift({ 
    // configuration for testing purposes 
    }, function(err, server) { 
    sails = server; 
    if (err) return done(err); 
    // here you can load fixtures, etc. 
    done(err, sails); 
    }); 
}); 

after(function(done) { 
    // here you can clear fixtures, etc. 
    Sails.lower(done); 
}); 

由于您的模型转换为对电梯水线集合,它 是必要试图对其进行测试(这 同样适用于控制器和您的应用程序的其他部分之前,解除您sailsApp,所以 一定要先打电话给这个文件)。

+0

谢谢你的帮助。我做了,但这并没有解决我的问题。 –

相关问题