当身体,时间和超时不匹配时,为什么nock匹配请求?

时间:2017-03-22 23:26:50

标签: javascript unit-testing nock

我有一个服务请求被锁定,我希望在这种情况下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与以下参数不匹配 身体,时间,超时 仍然n to回报我正确的儿子

2 个答案:

答案 0 :(得分:0)

您需要在body对象中指定nock,否则nock将根据网址和动词拦截它。

根据official nock documentation,必须指定一个正文才能匹配。

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

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

答案 1 :(得分:0)

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

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