create-react-app:使用代理进行 Jest 测试

Mar*_*hoh 3 proxy jsdom jestjs create-react-app

我想使用实际的 API 进行 React Jest 测试。因为测试环境是JSDom,所以无法进行跨域请求。在开发中,通过在 package.json 文件中指定代理可以轻松解决此问题,但这不适用于运行的测试套件:npm test

我知道在创建新的 JSDom 实例时可以指定代理(请参阅文档):

const resourceLoader = new jsdom.ResourceLoader({
  proxy: "http://127.0.0.1:9001",
});
Run Code Online (Sandbox Code Playgroud)

现在我找不到在我的应用程序中使用它的方法,该应用程序是使用 create-react-app (CRA) 创建的...所以我的问题是,在通过 CRA 应用程序运行 Jest 时是否有某种方法可以指定代理?

谢谢!

Mar*_*hoh 7

我刚刚知道如何做到这一点。有一个 Jest 配置选项可以设置 JSDom 实例的 url:“testURL”。但是,当在 package.json 中指定它时,它将不起作用,例如:

jest: {
    "testURL": "http://localhost:4000"
}
Run Code Online (Sandbox Code Playgroud)

有效的方法是直接在 NPM 脚本中指定选项。这将使 NPM 测试脚本如下所示:

"test": "react-scripts test --testURL=http://localhost:4000"
Run Code Online (Sandbox Code Playgroud)

希望它可以帮助遇到同样问题的人