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

时间:2015-01-08 16:10:33

标签: javascript node.js nock.js

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

http://api.myapihost.com/images?foo=bar&spam=egg

网址参数组合可能有所不同。我试图拦截这个请求并回复一个空对象。

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

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

Uncaught Error: Nock: No match for HTTP request GET /images?height=2500

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

2 个答案:

答案 0 :(得分:10)

使用nock,您可specify regular expressions

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

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

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

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

答案 1 :(得分:5)

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

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

您可以查看文档here