【问题标题】:Test rendering views with EJS in Mocha在 Mocha 中使用 EJS 测试渲染视图
【发布时间】:2017-02-21 15:36:50
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: node.js unit-testing testing mocha.js ejs


    【解决方案1】:

    测试一个httpget本质上可以理解为需要测试一个路由。 因此,您的测试应该包括一个 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 请求,所以使用一个节点包来启动您的“server.js”来初始化服务器并使用 request(server) 进行测试。

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

    【讨论】:

    • 虽然此链接可能会回答问题,但最好在此处包含答案的基本部分并提供链接以供参考。如果链接页面发生更改,仅链接答案可能会失效。 - From Review
    • 谢谢,帕特里克!问题的编辑部分不知何故削弱了我完全回答的热情,我不确定提问者是否真的在寻找答案,但由于其他人可能会遇到类似要求的问题,所以我提供了链接。
    • @PatrickHund 如果我的编辑满足您对评论的关注,请删除 -1 downvote
    猜你喜欢
    • 2015-06-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-20
    • 1970-01-01
    • 1970-01-01
    • 2018-11-22
    • 1970-01-01
    相关资源
    最近更新 更多