gpt4 book ai didi

node.js - 在 Mocha 中使用 EJS 测试渲染 View

转载 作者:行者123 更新时间:2023-11-28 20:38:48 28 4
gpt4 key购买 nike

我已经完成了一个 CRUD 应用程序的构建,并通过了 20 个测试。我正在使用 EJS 来呈现 View ,但现在我的测试遇到了问题。

作为一个简单的例子,假设我正在检查当 GET 请求发送到 '/' 时,JSON 会像这样发送 res.json({message :'hello'}) 这样我就可以在 Mocha 中设置测试,使 res.body.message 等同于 'hello'。

但是,如果我想呈现 index.ejs 页面而不是发送 JSON,该怎么办。所以它看起来像 res.render('index',{message:'hello'})。如何测试 res.render()?或者更具体地说,我如何测试传递给 res.render() 的对象?

编辑: 这个问题(以及此类问题)的解决方案可以通过使用称为功能测试 的测试范例来解决。谷歌一下。

最佳答案

测试一个http get 本质上可以理解为需要测试一个路由。因此,您的测试应该包括一个 expect 子句(关于在寻找路由时会发生什么)和验证响应,在本例中是一个 JSON 对象。

使用 Mocha ,您可以将测试描述为

 it('should respond with JSON data', function (done) {
request(server)
.get('/about/jv')
.expect(200)
.end(function (err, response) {
assert.equal(response.header['content-type'], 'application/json; charset=utf-8');
assert.deepEqual(response.body, {
"data":{
"username":"hello"}
});
done();
});
});

因为您需要一个服务器来针对“supertest”运行 http 请求,所以使用一个 Node 包来启动您的“server.js”来初始化服务器并使用 request(server) 进行测试。

检查 this - GitHub 存储库具有针对此要求的完整测试模板。它还对返回的 JSON 对象进行了测试。

关于node.js - 在 Mocha 中使用 EJS 测试渲染 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42371649/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com