首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何通过具有不同状态代码的Nock在同一url上进行后续调用

如何通过具有不同状态代码的Nock在同一url上进行后续调用
EN

Stack Overflow用户
提问于 2019-03-05 02:32:46
回答 1查看 4.1K关注 0票数 5

问题:我想模拟一种情况,在同一个http调用中,我得到了不同的结果。具体地说,就是第一次失败。在某种程度上,这类似于stub.onFirstCall()Sinon功能,stub.onSecondCall()期望:我期望如果我在第一次调用中使用once,在第二次调用中使用twice,我将能够完成上述任务。

代码语言:javascript
复制
nock( some_url )
    .post( '/aaaa', bodyFn )
    .once()
    .reply( 500, resp );
nock( some_url )
    .post( '/aaaa', bodyFn )
    .twice()
    .reply( 200, resp );
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-03-05 08:45:05

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

代码语言:javascript
复制
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()方法。

票数 13
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54989431

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档