【发布时间】:2021-04-23 20:08:39
【问题描述】:
我正在使用 PollyJS 在我的测试中记录网络请求。当唯一的网络请求是我想要记录的请求时,它运行良好 - 例如到外部服务。
我现在正在尝试进行集成测试,其中我的笑话代码启动了在无处不在的 127.0.0.1:3000 上运行的本地服务器,并且该服务器调用外部服务。
所以我的测试执行GET 到http://127.0.0.1:3000/api/some-path 并且该路由调用http://example.com/some-path。我希望 PollyJS 忽略对127.0.0.1:3000 的请求,并为后者进行通常的拦截和记录。我该如何配置它来做到这一点?
我一直在阅读和尝试config docs 中的设置,但到目前为止还没有运气。
【问题讨论】:
-
最近正在寻找像 Polly 这样的东西,但尽管它很受欢迎,但由于某种原因没有找到它,很高兴你提到了它。请指定您在测试中运行服务器的具体代码以及如何完成对远程 API 的请求。您在 3000 上运行它进行所有测试可能意味着服务器是在另一个进程中启动的,因此无法拦截在测试进程中在服务器内部进行的调用。
-
Jest 提供了一个 JEST_WORKER_ID 值,允许一个人调整端口,以便每个测试套件不会与另一个发生冲突。这允许您在唯一端口上的相同上下文/内存空间中为每个测试套件启动不同的服务器,并拦截对其的调用(如果需要)并仍然并行运行测试。我使用 node-fetch 来进行这些 API 调用。我这样做的方式并没有什么特别之处。