如何在 nock 拦截中检查我的请求正文,但保留单个整数值以具有各种值?

Mur*_*rch 6 mocking node.js nock.js

我试图在检查传递的请求正文是否符合我的假设的同时,尝试触发路由调用。该路由被多次调用以测试三个继承实现。param3除了请求正文中的单个值(如下)的值不同之外,调用是相同的。

nock('someAddress')
.post('/path', {
  param1: [someArray], 
  param2: someInteger,
  param3: /[0-9]+/             /* param3 has varying positive integer values */
})
.reply(200, { responseObject });
Run Code Online (Sandbox Code Playgroud)

如果我输入 的准确值param3,我可以获得测试的第一次迭代成功。显然,我还可以通过根本不指定请求正文来使测试正常工作。但是,如果我忽略param3或尝试指定各种通配符参数(例如示例中的正则表达式),我总是会收到以下错误消息:

[route] 404 error: Nock: No match for request POST [someAddress/path] {"param1":[someArray],"param2":someInteger,"param3":exactValueOfThisCall}
Run Code Online (Sandbox Code Playgroud)

如何在 nock 拦截中检查我的请求正文,但允许单个参数具有各种整数值?

小智 3

您可以在检查正文时添加分配,并稍后检查分配的参数:

let attr;
nock("https://url.com").put(`/path`, body => {
    attr = body;
    return true;
}).reply(200);
Run Code Online (Sandbox Code Playgroud)