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真棒,很高兴听到这对我有帮助!