首页 > 解决方案 > create-react-app:使用代理进行 Jest 测试

问题描述

我想为我的 react Jest 测试使用一个实际的 API。因为测试环境是JSDom,所以不能跨域请求。在开发中,这很容易通过在 package.json 文件中指定代理来解决,但这不适用于通过以下方式运行的测试套件:npm test.

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

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

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

谢谢!

标签: proxyjestjscreate-react-appjsdom

解决方案


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

jest: {
    "testURL": "http://localhost:4000"
}

起作用的是直接在 NPM 脚本中指定选项。这将使 NPM 测试脚本看起来像:

"test": "react-scripts test --testURL=http://localhost:4000"

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


推荐阅读