错误:Nock:请求不匹配

use*_*867 5 node.js nock

我收到以下错误

{ error: 
   { Error: Nock: No match for request {
     "method": "GET",
     "url": "http://localhost:3000/admin/orders/30075889/transactions.json",
     "headers": {
       "content-type": "application/json",
       "host": "localhost:3000"
     }
   } Got instead {
     "method": "GET",
     "url": "http://localhost:3000/admin/orders/30075889/transactions.json",
     "headers": {
       "content-type": "application/json",
       "host": "localhost:3000"
     }
   }
Run Code Online (Sandbox Code Playgroud)

网址是预期的,不知道什么是错的,任何指针?

Mea*_*her 17

默认情况下,Nock 拦截器不会持续存在。对于每个请求,nock 都需要一个拦截器。看起来您只设置了一次拦截器,并希望它对每个请求都有效。如果您希望拦截器持续使用,请使用.persist()如下所示的选项。

var scope = nock('http://localhost.com')
  .persist()
  .get(/.*/)
  .reply(200, 'Nock all get requests!');
Run Code Online (Sandbox Code Playgroud)

  • 我已经坚持()但错误仍然出现......它刚刚开始出现 (3认同)

小智 14

使用.log(console.log)看到确切的错误信息.

EX:

nock('https://test.org/sample')
.persist()
.log(console.log)
.get('/test')
.query({})
.reply(200, response);
Run Code Online (Sandbox Code Playgroud)

当您使用它并运行测试时,您将在控制台中看到类似的内容

matching https://test.org/sample/test to GET https://test.org/sample/test with query({}): **true/false**.
Run Code Online (Sandbox Code Playgroud)

如果说的是真的,那么你的要求应该是好的.但如果它说错,请检查两个请求并确保它们匹配.

  • 它已被弃用吗?`类型错误:nock(...).log 不是一个函数` (11认同)
  • 使用环境变量“DEBUG=nock.*”代替“.log(...)”,不再支持日志。即:`DEBUG=nock.* jest -i your/test/file.test.js` (3认同)

Mic*_*ský 11

你可以随时显示准备好的箭尾,这几乎总是一个错字......;)

console.log(nock.activeMocks());

(webstorm 中的调试器很糟糕并且 nock 未定义)