【问题标题】:Cypress with NextJS SSR - intercept RESTful API using AxiosCypress 与 NextJS SSR - 使用 Axios 拦截 RESTful API
【发布时间】:2023-03-14 00:37:01
【问题描述】:
我正在尝试在我的 SSR next.js 应用程序上使用 cypress 和固定装置编写一些测试,该应用程序使用 Axios 连接到 RESTful API。但是我无法使用cy.intercept() 拦截 RESTful API,因为 cypress 无法跟踪在 SSR 中发送的请求,而cy.intercept() 仅适用于 cypress 可以跟踪的请求。有什么方法可以帮助我更改来自 RESTful API 的响应?任何软件包也会有所帮助。
【问题讨论】:
标签:
next.js
cypress
server-side-rendering
【解决方案1】:
cy.intercept 依赖于浏览器内的 API 来捕获请求。您在 Next.js 中的 SSR 挂钩中执行的请求(例如 getServerSideProps)不会发生在浏览器中,因此 cy.intercept 对它们一无所知。
我对 API 模拟解决方案有偏见,但我仍然鼓励您再次研究 MSW。请参阅official Next.js example,它使用相同的请求处理程序同时支持浏览器端和服务器端的请求拦截。自述文件还详细介绍了两种拦截工作所需的关键步骤。
这种拦截将 MSW 嵌入到 Next.js 应用程序中。这意味着如果不重新启动运行时或将 worker/server 实例暴露给测试上下文,您将无法拥有运行时请求处理程序。这对您本身来说可能不是问题,因此您可以忽略此提及,直到您知道它与您的测试设置相关。