考虑这个场景:
当您访问我的/
页面时,服务器将使用如下所示的 JSON 进行响应
res.json({
message: 'Welcome home.'
});
为了测试这个,我创建了一个文件 home.test.js 并像这样测试它:
const chai = require('chai');
const expect = chai.expect;
const chaiHttp = require('chai-http');
const server = require('../server')
chai.use(chaiHttp);
describe('GET /', () => {
it('should respond with homepage', (done) => {
chai
.request(server)
.get('/')
.end((err, res) => {
expect(res.status).to.equal(200);
expect(res.body.message).to.equal('Welcome home.');
done();
});
});
});
简单测试通过,一切按计划进行。这就是问题所在。稍后,当我想使用 ejs 来呈现 View 时,我的代码将更改为:
res.render('index', { message: 'Welcome home.' });
所以现在我之前的测试不会通过,因为 res.body.message
现在的值是 undefined
。既然响应将是 res.render()
,我该如何实际测试呢?
最佳答案
我认为您可以在呈现页面之前影响到请求正文的消息。你的代码将是这样的:
res.body.message="Welcome home".
res.render('index',{message:"welcome home"})
关于node.js - 测试 REST API 并使用 EJS 渲染,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42997649/