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
返回{}
答案 0 :(得分:2)
您正在测试响应正文具有message
的属性,但这不是视图本地工作的方式:它们作为变量传递给视图视图引擎可以替换。如果视图中不存在该变量,则不会进行替换。此外,在supertest中使用get
方法默认情况下不会返回res.body
;您需要检查res.text
。所以:
home/index.ejs
视图实际上包含<%= message %>
某处。assert(res.text.match(/hello/))
,以检查是否存在应在渲染视图中替换<%= message %>
的“hello”字符串。答案 1 :(得分:1)
传递给您的视图函数的参数看起来不正确。看起来您正在尝试返回JSON对象。请尝试使用json函数:
res.json({message: 'hello'});
如果要将此对象传递给应用程序中的视图文件,则需要在函数的第一个参数中指定视图文件的路径:
res.view("viewfile", {message: 'hello});