6

我在使用Nock测试我的节点应用程序时遇到问题。我通过 记录所有请求nock.recorder.rec,但其中有多部分请求。我使用表单数据。当我使用功能时,此模块将边界设置为请求正文form.append。问题是边界总是不同的,当我使用记录的数据运行测试时,Nock 找不到请求的匹配项(因为请求正文中的 boyoudary 不是记录时的内容)。可以做什么?对不起,我的英语不好。

4

2 回答 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 回答