我在使用Nock测试我的节点应用程序时遇到问题。我通过 记录所有请求nock.recorder.rec
,但其中有多部分请求。我使用表单数据。当我使用功能时,此模块将边界设置为请求正文form.append
。问题是边界总是不同的,当我使用记录的数据运行测试时,Nock 找不到请求的匹配项(因为请求正文中的 boyoudary 不是记录时的内容)。可以做什么?对不起,我的英语不好。
问问题
4163 次
2 回答
5
我遇到了类似的问题。您可以做的是将第二个参数用作函数,并匹配您尝试作为表单数据发送的对象。例子:
nock('localhost')
.post('/url', function(body) {
return JSON.stringify(body) === JSON.stringify(params);
})
.reply(200, 'some data');
更多关于这里的文档:https ://github.com/pgte/nock#specifying-request-body
于 2015-09-21T15:47:04.510 回答
4
另一种解决方案是使用RegExp
:
nock(baseUrl)
.post(`/url', /form-data; name="field"[^]*value/m)
.reply(200, 'some data');
笔记
- 正则表达式中输入字符 (
^
) 的开头(因为表单数据可能包含换行符) - 多线
m
标志_ - 上面的例子对应于:
form.append('field', value);
- 有关真实示例,请参见此处。这还显示了如何使用
RegExp
类在正则表达式中使用变量。
于 2018-05-19T21:13:54.660 回答