问题:我想模拟一种情况,在同一个http调用中,我得到了不同的结果。具体地说,就是第一次失败。在某种程度上,这类似于stub.onFirstCall()
的Sinon功能,stub.onSecondCall()
期望:我期望如果我在第一次调用中使用once
,在第二次调用中使用twice
,我将能够完成上述任务。
nock( some_url )
.post( '/aaaa', bodyFn )
.once()
.reply( 500, resp );
nock( some_url )
.post( '/aaaa', bodyFn )
.twice()
.reply( 200, resp );
发布于 2019-03-05 08:45:05
正确的方法是简单地调用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中所述
当您为
设置一个拦截器并使用该拦截器时,它将从拦截器列表中删除。这意味着您可以拦截2个或更多对同一URL的调用,并在每个调用上返回不同的内容。这还意味着您必须为每个请求设置一个拦截器,否则nock将抛出一个错误,因为该URL不在拦截器列表中。如果不希望拦截器在使用时被删除,可以使用.persist()方法。
https://stackoverflow.com/questions/54989431
复制相似问题