0

我有一个已锁定的服务请求,在这种情况下,我预计会出现一个 nock 错误(nock:与请求 POST 不匹配),但会获得成功的响应。想知道为什么!

nock(`http://localhost`, {
                reqheaders: {
                    'Content-Type': 'application/json'
                }
            })
            .post('/')
            .reply(201, function () {
                return fs.readFileSync(`./data/mock-response.json`, 'utf8');
            });

实际的服务电话是

    request(
    url: 'http://localhost/',
    time:true,
    timeout: 5000,
    method: 'POST',
    headers: {
        Content-Type: 'application/json
    },
    body: {
        test:'test'}

)

与 nock body、time、timeout 的以下参数不匹配仍然 nocks 返回我正确的儿子

4

2 回答 2

0

您需要bodynock对象中指定 a ,否则 nock 将根据 URL 和动词拦截它。

根据官方 nock 文档,必须指定主体才能匹配。

你的 nock 对象看起来像这样:

nock(`http://localhost`, {
  reqheaders: {
    'Content-Type': 'application/json'
  }
})
.post('/', {
  test: 'test'
})
.reply(201, function () {
  return fs.readFileSync(`./data/mock-response.json`, 'utf8');
});
于 2017-03-22T23:39:23.740 回答
0

根据文档:您可以指定要匹配的请求正文作为获取、发布、放置或删除规范的第二个参数。

它没有说必须。如果未指定正文,则所有帖子都将匹配。

于 2018-10-02T15:16:08.970 回答