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

时间:2020-04-09 13:00:48

标签: proxy jestjs create-react-app jsdom

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

我知道使用(see docs)创建新的JSm实例时可以指定代理:

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

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

谢谢!

1 个答案:

答案 0 :(得分:1)

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

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

起作用的是直接在NPM脚本中指定选项。这将使NPM测试脚本如下所示:

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

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