问题:
我想模拟一种情况,在同一HTTP调用上我得到不同的结果。具体来说,是第一次失败。
在某种程度上,这类似于dynamic
,Make
的{{3}}功能
期望:
我希望,如果我在第一个电话上使用stub.onFirstCall()
而在第二个电话上使用stub.onSecondCall()
,我将能够完成上述任务。
once
答案 0 :(得分:0)
正确的方法是简单地
致电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()方法。