我正在使用带有craco和craco-铯的create react应用程序将铯加载到我的项目中。我正在尝试设置Jest以开始创建测试,但是问题是Cesium正在使用requireJS。
我在package.json
// package.json
...
"jest": {
"collectCoverageFrom": [
"src/**/*.{js,jsx,ts,tsx}', '!src/**/*.d.ts"
],
"globalSetup": "<rootDir>/setupTests.js"
}
...
基于此处打开的票证:https://github.com/facebook/jest/issues/1914
我使用以下代码设置了setupTests.js
:
// setupTests.js
module.exports = async () => {
var cesium = require('cesium');
process.$Cesium = cesium
};
并且我已经进行了有效渲染的第一个基本测试:
// App.test.js
import React from 'react';
import ReactDOM from 'react-dom';
import App from './App';
it('renders without crashing', () => {
const div = document.createElement('div');
ReactDOM.render(<App />, div);
ReactDOM.unmountComponentAtNode(div);
});
但是我在<App />
组件中的其中一个视图中使用以下代码得到了错误:
import Cesium from "cesium";
...
TypeError: Cannot read property 'Ion' of undefined
...
Cesium.Ion.defaultAccessToken = '...';
在调用Cesium函数时将其报告为未定义。我试着用jest.config.js
开玩笑地从下面的代码中提取配置:
// jest.config.js
const { createJestConfig } = require("@craco/craco");
const cracoConfig = require("../craco.config.js");
const jestConfig = createJestConfig(cracoConfig);
module.exports = jestConfig;
但是create react app不会拾取此文件,因此我无法尝试验证它是否可以工作。
答案 0 :(得分:0)
遇到了同样的问题。
将 react-scripts
升级到 4.0.1 版,将 @craco/craco@
升级到 6.0.0 版,似乎解决了这些问题,jest 现在可以识别所有来自 cesium 的导入。不需要其他配置文件。