nock.js - 如何匹配URL中的任何参数组合

rub*_*eet 13 javascript node.js nock.js

我正在尝试模拟对此API网址的响应

http://api.myapihost.com/images?foo=bar&spam=egg
Run Code Online (Sandbox Code Playgroud)

URL参数组合可以变化.我试图拦截此请求并使用空对象进行响应.

nock('http://api.myapihost.com')
  .persist()
  .get('/images', '*')
  .reply(200, {});
Run Code Online (Sandbox Code Playgroud)

我的测试用例运行时收到此错误消息:

Uncaught Error: Nock: No match for HTTP request GET /images?height=2500
Run Code Online (Sandbox Code Playgroud)

如何配置nock以匹配任何URL参数组合?

Ben*_*uer 17

使用nock,您可以指定正则表达式.

这是一个例子(用v9.2.3测试):

nock('http://api.myapihost.com')
  .get(/images.*$/)
  .reply(200, {});
Run Code Online (Sandbox Code Playgroud)

.query(true)如果你想模拟整个url而不管传递的查询字符串是什么,还有一个更简单的语法:

nock('http://api.myapihost.com')
  .get('/images')
  .query(true)
  .reply(200, {});
Run Code Online (Sandbox Code Playgroud)


ELa*_*unt 7

您应该使用路径过滤来匹配URL参数。

var scope = nock('http://api.myapihost.com')
                .filteringPath(function(path) {
                   return '/images';
                 })
                .get('/images')
                .reply(200,  {});
Run Code Online (Sandbox Code Playgroud)

您可以在这里查看文档