使用 Jest 模仿网络服务器进行测试

问题描述 投票:0回答:2

我有一个有点奇怪的问题:我有一个从网页抓取数据的程序(只是实际的 HTML 页面,而不是 API 响应)。

我需要使用 Jest 库为此程序编写端到端测试。为了一致地测试功能,我需要确保引用的网页不会更改,而使用网络上的资源几乎不可能实现这一点。

我想知道使用express/fastify等在本地启动一个新的网络服务器是一种多么好的做法。在运行测试之前提供静态 HTML 页面,然后在测试通过后关闭服务器。

我正在寻找的是一个轻型 Web 服务器,其任务只有一个:提供静态 html+css 页面。 有没有更好的方法来实现我提到的目标?预先感谢您!

javascript jestjs mockwebserver
2个回答
1
投票

我们在开发服务器

E2E
上运行
EG:- https://dev.something.com
,该服务器始终启动并运行。另外,正如您所说,您可以在
localhost
上启动一个轻量级网络服务器来运行测试。但唯一的问题是,当你使用
E2E
CI/CD pipelines
时,那么测试服务器无法访问
localhost
。在这种情况下,您需要一个单独的服务器来为测试服务器提供站点服务。

目前,如果您正在考虑通过启动和停止 Web 服务器来在本地计算机上运行测试,我建议您使用

live server
中的
visual studio code
扩展。这是非常轻量级的,是服务
HTML
asserts
的最佳选择。它将在
localhost
上启动您的网站,一旦您的工作完成,您可以通过单击按钮停止它。

实时服务器(VS代码扩展)


0
投票

为此,有 Jest 开发服务器 软件包。已使用它来运行 Jest / Puppeteer e2e 测试,但据我所知它完全独立于 Puppeteer。

您需要 1. 使用应用程序需要抓取的静态 HTML 内容来增强测试,2. 使用 Web 服务器扩展项目的开发依赖项,以通过 http(例如 express)提供静态页面,最后 3. 配置 Jest开发服务器在测试运行过程中启动 Web 服务器,并在测试完成后将其关闭。

它的设置相当容易,具有大量功能,如果您出于任何原因需要更详细地调试/调查事物,源代码也非常简单。

© www.soinside.com 2019 - 2024. All rights reserved.