Unit testing 如何用笑话模拟远程网站对单元测试木偶程序代码的响应?

Unit testing 如何用笑话模拟远程网站对单元测试木偶程序代码的响应?,unit-testing,jestjs,puppeteer,Unit Testing,Jestjs,Puppeteer,我正在为一个网站实现一个网页抓取脚本,它将收集一些有用的信息 脚本使用Puppeter库实现,基本上是一组指令,如: 开始无头镀铬 打开新选项卡/页面 从HTML获取一些分页链接 打开找到的每个分页链接,并从HTML中提取一些信息 我正在寻找一些测试此功能的方法。理想情况下,我想做的是在测试文件夹中“预保存”真实的HTML响应,然后模拟外部网站响应(确保它们始终相同)。然后断言收集的信息是正确的 我熟悉几种能够在浏览器中模拟fetch函数端点的工具。我在找一些类似的东西,不过是木偶演员 到目前为

我正在为一个网站实现一个网页抓取脚本,它将收集一些有用的信息

脚本使用Puppeter库实现,基本上是一组指令,如:

  • 开始无头镀铬
  • 打开新选项卡/页面
  • 从HTML获取一些分页链接
  • 打开找到的每个分页链接,并从HTML中提取一些信息
  • 我正在寻找一些测试此功能的方法。理想情况下,我想做的是在测试文件夹中“预保存”真实的HTML响应,然后模拟外部网站响应(确保它们始终相同)。然后断言收集的信息是正确的

    我熟悉几种能够在浏览器中模拟
    fetch
    函数端点的工具。我在找一些类似的东西,不过是
    木偶演员

    到目前为止,我考虑的唯一解决方案是使用
    browser
    实例作为脚本的依赖项。然后模拟浏览器的
    newPage
    方法返回带有自定义拦截器的页面。不过,这看起来需要做很多工作


    还有其他解决方案吗?

    一个简单的解决方案是在本地存储要测试的HTML页面(或其部分),然后在Puppeter中打开它。这是可能的。然后可以在Javascript测试框架(如Mocha或Jest)中测试结果

    如果您需要一个真正的web服务器进行测试,另一个选择是使用一个类似于本地HTML页面的库作为web服务器响应的模拟。你可以在这里找到一个例子,其中包含了各种搜索引擎的测试


    还可以像
    启动
    转到
    $eval
    。这种方法需要很多存根方法。

    一个简单的解决方案是将要测试的HTML页面(或其中的一部分)存储在本地,然后在Puppeter中打开。这是可能的。然后可以在Javascript测试框架(如Mocha或Jest)中测试结果

    如果您需要一个真正的web服务器进行测试,另一个选择是使用一个类似于本地HTML页面的库作为web服务器响应的模拟。你可以在这里找到一个例子,其中包含了各种搜索引擎的测试


    还可以像
    启动
    转到
    $eval
    。这种方法需要很多存根方法。

    为什么要模拟传输层?为什么不将起始页URL作为输入,这样就可以将刮板指向本地服务器进行测试?为什么要模拟传输层?为什么不将起始页URL作为输入,这样您就可以将刮板指向本地服务器进行测试?