我正在使用 jest + 酶设置进行测试。如果定义了窗口,我有有条件地呈现某些东西的函数。
在我的测试套件中,当未定义窗口时,我试图达到第二种情况,但我不能强制它。
it('当窗口未定义时产生一些东西', () => { 窗口 = 未定义; 期望(myFunction()).toEqual(thisWhatIWantOnUndefinedWinow); });
但即使我强制窗口未定义,它也不会达到预期的情况,窗口始终是窗口(jsdom?)
是我的玩笑设置有问题还是我应该以另一种方式处理?
我正在使用 jest + 酶设置进行测试。如果定义了窗口,我有有条件地呈现某些东西的函数。
在我的测试套件中,当未定义窗口时,我试图达到第二种情况,但我不能强制它。
it('当窗口未定义时产生一些东西', () => { 窗口 = 未定义; 期望(myFunction()).toEqual(thisWhatIWantOnUndefinedWinow); });
但即使我强制窗口未定义,它也不会达到预期的情况,窗口始终是窗口(jsdom?)
是我的玩笑设置有问题还是我应该以另一种方式处理?
我能够window
使用以下模式测试未定义的场景。它允许您window
在同一个文件中运行和不运行测试。@jest-environment node
不需要在文件顶部添加。
describe('when window is undefined', () => {
const { window } = global;
beforeAll(() => {
// @ts-ignore
delete global.window;
});
afterAll(() => {
global.window = window;
});
it('runs without error', () => {
...
});
});
这是我window
在选定的玩笑测试期间强制未定义所做的工作。
您可以通过在文件@jest-environment node
顶部添加来强制在某些测试文件中取消定义窗口。
测试窗口undefined.spec.js
/**
* @jest-environment node
*/
// ^ Must be at top of file
test('use jsdom in this test file', () => {
console.log(window)
// will print 'undefined' as it's in the node environment
});
如果您需要该window
对象,只需删除顶部的该语句即可。