node.js - nodejs/mocha/nock - 模拟整个 html 响应

标签 node.js unit-testing express mocking mocha.js

如何为我的测试模拟整个 HTML 正文响应?

我正在使用nodejs/mocha/nock。

使用 nock,我可以很好地模拟 JSON 响应,例如:

nock('http://myapp.iriscouch.com')
                .get('/users/1')
                .reply(200, {_id: "123ABC", _rev: "946B7D1C", username: 'pgte'});

我使用curl -o来获取我想要的模拟的html,所以我已经将它放在一个文件中 - 但我不知道如何将HTML文件传递给nock(或其他)。

谢谢。

最佳答案

首先获取测试文件的 HTML 内容并将其放入字符串中(例如使用 fs.readFile)

之后您可以执行以下操作:

nock('http://myapp.iriscouch.com').
        get('/users/1').
        reply(200, yourFileContent);

这就是我过去的做法:)

如果您愿意,您可以显式指定内容类型,因为您将正文指定为字符串,这将有效地让您轻松模拟任何非二进制响应:

nock('http://myapp.iriscouch.com').
        get('/users/1').
        reply(200, yourFileContent, {'content-type': 'text/html'});

如果您想要更通用的方法,我已经问过 a more general question关于类似的问题并得到了一些有趣的答复。

关于node.js - nodejs/mocha/nock - 模拟整个 html 响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16949308/

相关文章:

unit-testing - 单元测试 Java 8 谓词

node.js - 如何将 Passport.js 和 Node 用于单页应用程序

node.js - 与模板引擎 react

node.js - 查找 MongoDb 架构设计的查询

javascript - 无法查询 Puppeteer 上的选择器(TypeError : selector.startsWith 不是函数)

python - 单元测试中的模拟 Django 命令类变量

javascript - 发出多个请求并将它们传递给模板(Express + Node.js + FB open graph)

node.js - 从同一 Node 项目运行 2 个不同的容器

javascript - 如何保存 DOM 插入?

php - 您为 Symfony 使用哪个单元测试框架?