2016-01-22 167 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

謝謝你的幫助。我做了,但這並沒有解決我的問題。 –

相關問題