Sails js ::测试传递给视图的变量

时间:2015-09-30 00:44:55

标签: node.js sails.js mocha

控制器

module.exports = {

  index: function (req, res) {
    res.view({message: 'hello'});
  }
}

如何测试变量message是否设置正确?

var request = require('supertest');

describe('HomeController', function() {
  describe('index', function() {
    it('should return success', function (done) {
      request(sails.hooks.http.app)
        .get('/')
        .expect(200).end(function (err, res) {
          if (err) throw err;
          res.body.should.have.property('message');
          done();
        });
    });
  });
});

res.body返回{}

2 个答案:

答案 0 :(得分:2)

您正在测试响应正文具有message属性,但这不是视图本地工作的方式:它们作为变量传递给视图视图引擎可以替换。如果视图中不存在该变量,则不会进行替换。此外,在supertest中使用get方法默认情况下不会返回res.body;您需要检查res.text。所以:

  1. 确保您的home/index.ejs视图实际上包含<%= message %>某处。
  2. 将您的测试更改为assert(res.text.match(/hello/)),以检查是否存在应在渲染视图中替换<%= message %>的“hello”字符串。

答案 1 :(得分:1)

传递给您的视图函数的参数看起来不正确。看起来您正在尝试返回JSON对象。请尝试使用json函数:

res.json({message: 'hello'});

如果要将此对象传递给应用程序中的视图文件,则需要在函数的第一个参数中指定视图文件的路径:

res.view("viewfile", {message: 'hello});