嘲笑着。模拟来自同一主机的只有一条路径

时间:2018-04-25 11:59:30

标签: node.js nock

我正在使用诺克。  我想知道我是否只能模拟一些主机的呼叫,具体取决于路径。我正在使用{allowUnmocked:true},它没有帮助。

例如,我想只模拟这些来电中的一个(数字是ids,所以我不知道所有这些):

这个问题类似于这个问题: Mocking with Nock, mock only a specific route with the same host

2 个答案:

答案 0 :(得分:0)

Nock拦截器only fire once

您可以配置一个包含全能路径的路径,例如:

nock('http://blabla.com').get(/account/) // if any path has 'account' in it, somewhere

一旦捕获到该拦截器,对该匹配URL的下一次调用将不会被nock捕获。

或者您可以指定特定ID,例如

nock('http://blabla.com').get('/account/' + id)

显然只会拦截该ID,因为其他ID与该模式不匹配。您也可以为每个人做出不同的模拟回复。

答案 1 :(得分:0)

这就是我所做的。我想模仿他们路径中有123456的所有电话。所以,如果路径没有它,我返回X,只得到那些不是X(使用负向前看正则表达式)

nock(`https://my-url.com`, {
  allowUnmocked: true,
})
.filteringPath((thePath) => {
const match = /123456/.test(thePath);
return match ? thePath : 'X';
  })
.persist()
// This handles all request but 'X' (returned by the filteringPath fn).
.get(/^(?!(?:X)$).*$/)