Gun*_*app 38 webpack jestjs yarnpkg
我正在尝试开始学习最先进的Web开发学习React/Redux.
现在我坚持让测试运行.出于某种原因,jest失败了
Task :frontend:test
yarn jest v1.0.2
$ "/Users/gunnar/git/app.oakstair.se/frontend/node_modules/.bin/jest"
FAIL src/containers/App/App.test.js
? Test suite failed to run
ReferenceError: window is not defined
at Object.<anonymous> (config/polyfills.js:18:1)
at next (native)
at process._tickCallback (internal/process/next_tick.js:109:7)
Run Code Online (Sandbox Code Playgroud)
谷歌搜索了一段时间没有任何成功......
小智 53
在你的package.json中添加window
类似全局的东西
"jest": {
"verbose": true,
"preset": "react-native",
"setupFiles": ["./jest/setup.js"],
"testRegex": "(/tests/.*|\\.(test|spec))\\.(ts|tsx|js)$",
"transformIgnorePatterns": [
"node_modules/(?!(jest-)?react-native|lottie-react-native)"
],
"globals": {
"window": {}
}
}
Run Code Online (Sandbox Code Playgroud)
Jac*_*hen 44
我有同样的问题,我不相信修改全局变量是这样做的方法.问题是因为在我的jest配置中,我已经testEnvironment
设定了node
它应该的时间jsdom
.对我来说,这个设置位于package.json中,由react starter app定义.
j2L*_*L4e 11
Jest 的testEnvironment
默认值曾经是jsdom
. 它已更改为node
最近从版本 27 开始。
您可以testEnvironment: 'jsdom'
在配置文件中设置以继续使用 JSDOM。
但是'node'
似乎要快得多,因此您应该尽可能模拟浏览器 API。
https://jestjs.io/blog/2021/05/25/jest-27
npm i jest-environment-jsdom
Run Code Online (Sandbox Code Playgroud)
/**
* @jest-environment jsdom
*/
Run Code Online (Sandbox Code Playgroud)
如果您想保持testEnvironment
设置为node
,您可以window
在 jest.config.js/ts 中配置一个全局变量,然后模拟您在测试用例中需要的内容。
只要您不需要任何高级功能,它就可以正常工作。它与之前一些高评价的答案相同,但包括一些示例。
import type {Config} from '@jest/types';
const config: Config.InitialOptions = {
...jestConfig,
testEnvironment: "node",
globals: {
window: {
location: {}
}
}
};
export default config;
Run Code Online (Sandbox Code Playgroud)
SomeTestCase.spec.ts
test('Is correct href', () => {
window.location.href = 'https://somedomain.com';
expect(window.location.href).toBe('https://somedomain.com');
})
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
18068 次 |
最近记录: |