如何通过具有不同状态代码的Nock对同一URL进行后续调用

问题描述 投票:0回答:1

问题:我想模拟一个情况,在同一个http调用中我得到不同的结果。具体来说,它第一次失败。在某种程度上,这类似于Sinonstub.onFirstCall()能力,stub.onSecondCall()期望:我预计如果我在第一次使用时使用once而在第二次调用时使用twice,我将能够完成上述操作。

nock( some_url )
    .post( '/aaaa', bodyFn )
    .once()
    .reply( 500, resp );
nock( some_url )
    .post( '/aaaa', bodyFn )
    .twice()
    .reply( 200, resp );
node.js sinon nock
1个回答
1
投票

正确的方法是简单地两次调用Nock

nock( some_url )
    .post( '/aaaa', bodyFn )
    .reply( 500, resp );
nock( some_url )
    .post( '/aaaa', bodyFn )
    .reply( 200, resp );

Nock的工作方式是每次调用都会为some_url注册一个拦截器。事实上,第一次调用some_url将清除第一个拦截器,依此类推。

docs所述:

当您为URL设置拦截器并使用该拦截器时,它将从拦截器列表中删除。这意味着您可以拦截对同一URL的两次或多次调用,并在每个调用上返回不同的内容。这也意味着你必须为你将要拥有的每个请求设置一个拦截器,否则nock会抛出一个错误,因为拦截器列表中没有该URL。如果您不希望在使用拦截器时将其删除,则可以使用.persist()方法。

© www.soinside.com 2019 - 2024. All rights reserved.