如何在Sails中使用摩卡testing控制器?

我有我的login页面下面的Controller

 // Authentication Controller // the basics of Passport.js to work. var AuthController = { // localhost:1337/login Render the login page // <form role="form" action="/auth/local" method="post"> // <input type="text" name="identifier" placeholder="Username or Email"> // <input type="password" name="password" placeholder="Password"> // <button type="submit">Sign in</button> // </form> login: function(req, res) { var strategies = sails.config.passport, providers = {}; // Get a list of available providers for use in templates. Object.keys(strategies).forEach(function(key) { if (key === 'local') return; providers[key] = { name: strategies[key].name, slug: key }; }); // Render the `auth/login.ext` view res.view({ providers: providers, errors: req.flash('error') }); }, // Log out a user and return them to the homepage // Passport exposes a logout() function on req (also aliased as logOut()) that // can be called from any route handler which needs to terminate a login // session. Invoking logout() will remove the req.user property and clear the // login session (if any). logout: function(req, res) { req.logout(); res.redirect('/login'); }, // The registration form is Just like the login form register: function(req, res) { res.view({ errors: req.flash('error') }); }, // Create a third-party authentication endpoint provider: function(req, res) { passport.endpoint(req, res); }, // Create a authentication callback endpoint // This endpoint handles everything related to creating and verifying Pass- // ports and users, both locally and from third-aprty providers. // Passport exposes a login() function on req (also aliased as logIn()) that // can be used to establish a login session. When the login operation // completes, user will be assigned to req.user. callback: function(req, res) { passport.callback(req, res, function(err, user) { req.login(user, function(err) { // If an error was thrown, redirect the user to the login which should // take care of rendering the error messages. if (err) { res.redirect('/login'); } // Upon successful login, send the user to the homepage were req.user // will available. else { res.redirect('/'); } }); }); } }; module.exports = AuthController; 

我正在使用摩卡作为我的testing框架。 该应用程序基于Sails 。 我将如何写摩卡testing用例并在提供的Controller上运行它们?

我正在使用supertest作为用户调用控制器,为此,首先解除before函数中的sails,以便supertest可以用作服务器。

 before(function (done) { Sails.lift({ // configuration for testing purposes log: { //level: 'silly' level: 'silent' }, hooks: { grunt: false, }, }, function (err, sails) { done(err, sails); }); } 

然后用你的sails应用程序的url初始化超级菜单

 request = require('supertest'); agent = request.agent(appurl); 

您现在可以编写testing来发布/获取数据,从前端testing您的控制器,就像客户端一样。

 it('should do the post and return whatever', function (done) { agent.post('/controller/function') .send(the_post_object_with_params) .end(function (err, res) { if (err) { console.log(err); } console.log(res.body); // the content done(); }); } 

我认为最主要的是将sails应用程序包含到你的testing用例中。 我也没有发现控制器testing的例子,但有一些与模型:

对Sails.js中的模型使用Mocha框架有可能吗?

不能在sailsjs中unit testing我的模型