node.js - Sails.js 和 Mocha、res.view 测试

标签 node.js sails.js mocha.js

我为我的 sails 应用程序编写了测试,但 Controller 中存在一些问题。当用户注册时,我检查是否重复,如果是,则呈现带有错误的表单,如果否,则呈现带有成功消息的表单。那么有人知道如何正确测试它吗?或者您可以建议更好的代码结构,非常感谢。

Controller :

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'})
})

测试:

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

所以问题是,如何测试 res.view?

最佳答案

如果我想测试我的 View ,我通常在测试中使用简单的请求。像这样:

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

它会检查整个正文,是否有我们提供的匹配字符串。请记住首先执行 npm install request-promise --save-dev (或任何可以发出请求的相关库)。

或者您可以使用 @Yann 提到的 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();
    });
});

关于node.js - Sails.js 和 Mocha、res.view 测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31195203/

相关文章:

javascript - 是否可以使用 Jest 或任何其他测试库/框架加载 url 并获取浏览器渲染的 DOM 对象?

javascript - 代码在生产环境和本地环境中表现不同

javascript - node.js - 合并回调结果

javascript - 如何使用 Javascript 或 Node.js 检查 Windows 操作系统更新状态?

javascript - 如何在正确的范围内做出 Promise,以便它具有要查询的正确值并返回?

javascript - Mocha 测试客户端和服务器端

javascript - Sails.js 模型,从 mysql 数据库中选择特定的列

sails.js - 如何使用 Jest 而不是 Mocha 测试 Sails.js 应用程序?

AngularJS/SailsJS :Access-Control-Allow-Origin is not allowed by Access-Control-Allow-Headers

node.js - 在注册表中找不到 "dt~mocha"("npm")