伪造赛普拉斯的非XHR网络请求

时间:2020-05-01 06:42:35

标签: cypress

我有一个AngularJS应用程序,我正在尝试使用赛普拉斯对它发出的一些网络请求进行存根。当前,我的问题是资源类型为Img的请求。我从赛普拉斯的文档中知道赛普拉斯无法对非XHR资源类型/请求进行存根,但是我正在寻找一种解决方法

我的应用程序从后端服务器请求图像,我想对它进行存根或伪造。我宁愿不修改应用程序代码,而宁愿创建一个外部解决方法。

我研究了以下内容,发现它们在这种情况下无用:

  • Sinon.js-同样只能处理XHR请求。
  • nock-替换节点的http.request,但是在Cypress中似乎不起作用。如果我直接将其添加到我的应用程序代码中,则可能会起作用,而我不希望这样做。

我也尝试了以下操作,但未成功:

  • 模拟服务器-运行模拟服务器并添加了expectation,但是对模拟服务器的请求似乎都没有通过。
  • Service Worker API-不确定如何register我的Service Worker,因为它需要一个.js文件作为输入。如果我通过赛普拉斯控制服务工作者,那么哪个.js文件将作为输入?
  • 使用express的模拟服务器-问题是应用程序在localhost:<some_port>上运行,而模拟服务器在localhost:<some_other_port>上运行。通过应用程序构造请求时,无法指定端口号。基本上,我的应用程序并没有真正遵循不同的端口号。

编辑:

我已经成功地使用express创建了一个模拟服务器。根据赛普拉斯的文档,不应在before()after()内启动和停止服务器。相反,它们应该在赛普拉斯启动之前启动,而在赛普拉斯停止之后停止。

0 个答案:

没有答案