我正在使用诺克。 我想知道我是否只能模拟一些主机的呼叫,具体取决于路径。我正在使用{allowUnmocked:true},它没有帮助。
例如,我想只模拟这些来电中的一个(数字是ids,所以我不知道所有这些):
这个问题类似于这个问题: Mocking with Nock, mock only a specific route with the same host
答案 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)$).*$/)