Javascript 如何在酶测试中获得窗口值,Jest+;创建React应用程序

Javascript 如何在酶测试中获得窗口值,Jest+;创建React应用程序,javascript,reactjs,mocking,jestjs,enzyme,Javascript,Reactjs,Mocking,Jestjs,Enzyme,由于我用来推出我的应用程序的构建过程,我在构建之后在一个文件中传递了一些环境变量,这很好。但是,它会通过以下错误消息中断我的测试: TypeError: Cannot read property 'DATA' of undefined 57 | Auth: { 58 | oth, > 59 | | ^ 60 | 61 | identity: checkEnv(window.env.DATA, 62 | process.

由于我用来推出我的应用程序的构建过程,我在构建之后在一个文件中传递了一些环境变量,这很好。但是,它会通过以下错误消息中断我的测试:

TypeError: Cannot read property 'DATA' of undefined

  57 |   Auth: {
  58 |     oth,
> 59 |
     | ^
  60 |    
  61 |     identity: checkEnv(window.env.DATA,
  62 |       process.env.REACT_APP_DATA), 

我已经尝试了许多解决方案,但还没有能够模拟window.env数据,我将如何做到这一点

Create React应用程序允许您通过包含一个“将在运行测试之前自动执行”的文件来进行测试

createreact应用程序还使用提供全局
窗口
对象的
jsdom
设置测试环境

您可以在
src/setupTests.js
中设置
window.env
,它将在测试期间可用:

src/setupTests.js

window.env = {
  DATA: 'hi'
}
export const getData = () => window.env.DATA
import { getData } from './code';

test('env', () => {
  expect(getData()).toBe('hi');  // SUCCESS
})
src/code.js

window.env = {
  DATA: 'hi'
}
export const getData = () => window.env.DATA
import { getData } from './code';

test('env', () => {
  expect(getData()).toBe('hi');  // SUCCESS
})
src/code.test.js

window.env = {
  DATA: 'hi'
}
export const getData = () => window.env.DATA
import { getData } from './code';

test('env', () => {
  expect(getData()).toBe('hi');  // SUCCESS
})

谢谢!这成功了!“我被难住了一点!”Andrewobrigewitch真棒,很高兴听到这对我有帮助!