Sails.js和Mocha,res.viewtesting

我为我的帆应用程序编写testing,但在控制器中有一些问题。 当用户注册时,我检查重复,如果是的话 – 渲染与错误的表单,如果没有 – 呈现与成功消息的forms。 那么谁能知道如何testing它? 或者,也许你可以build议更好的代码结构,非常感谢。

控制器:

User.findOne({ email: req.body.email }, function(err, user) { if(err) return res.json(err) if(!user) { User.create({email:req.body.email, password:req.body.password}).exec(function createCB(err, user){ if(err) return res.json(err); res.view('signup', { message: 'Done, user created'}) }) } else res.view('signup', { message: 'User already exist'}) }) 

testing:

 it('should show error if duplicated user - TODO', function (done) { request(sails.hooks.http.app) .post('/signup') .send({ email: 'test@test.te', password: 'test' }) .expect(200) .end(done) }) 

所以问题是,我怎么testingres.view?

我通常在我的testing中使用简单的请求,如果我想testing我的观点。 喜欢这个:

 it('able to test view', function(done) { require('request-promise')('http://localhost:1337/') .then(function(res) { res.should.contains('Done, user created'); done(); }) .catch(done); }); 

它会检查整个身体,是否有任何我们提供的匹配string。 请记得首先执行npm install request-promise --save-dev (或任何可以请求的相关库)。

或者你可以像supertest所说的那样使用supertest

 it('should be able to test view', function(done) { require('supertest') .agent(sails.hooks.http.app) .post('/signup') .send({ email: 'test@test.te', password: 'test' }) .expect(200) .end(function(err, res) { should.not.exist(err); res.should.contains('Done, user created'); return done(); }); }); 

您可以使用supertest这样的库来执行HTTP请求:

 it('should be able to test view', function(done) { require('supertest') .agent(sails.hooks.http.app) .post('/signup') .send({ email: 'test@test.te', password: 'test' }) .expect(200) .end(function(err, res) { should.not.exist(err); res.should.contains('Done, user created'); return done(); }); });