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(); }); });