繁体   English   中英

为什么正文,时间和超时不匹配时,nock匹配请求?

[英]Why is nock matching request when body, time and timeout should not match?

我的服务请求已收到通知,在这种情况下,我希望收到一个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返回我正确的儿子

您需要在nock对象中指定一个body ,否则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');
});

根据doc:您可以将要匹配的请求正文指定为get,post,put或delete规范的第二个参数。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM