Reactjs Jest.js强制窗口未定义

Reactjs Jest.js强制窗口未定义,reactjs,testing,jestjs,enzyme,Reactjs,Testing,Jestjs,Enzyme,我正在使用jest+酶设置进行测试。我有一个函数,如果定义了窗口,它会有条件地呈现某些内容 在我的测试套件中,我试图达到第二种情况,即现在定义了窗口,但我无法强制它 it('makes something when window is not defined', () => { window = undefined; expect(myFunction()).toEqual(thisWhatIWantOnUndefinedWinow); }); 它('在未定义

我正在使用jest+酶设置进行测试。我有一个函数,如果定义了窗口,它会有条件地呈现某些内容

在我的测试套件中,我试图达到第二种情况,即现在定义了窗口,但我无法强制它

it('makes something when window is not defined', () => { window = undefined; expect(myFunction()).toEqual(thisWhatIWantOnUndefinedWinow); }); 它('在未定义窗口时生成某些内容',()=>{ 窗口=未定义; expect(myFunction()).toEqual(thiswatiwantonunfinedown); }); 但即使我强制窗口未定义,它也不会达到预期的情况,窗口始终是窗口(jsdom?)


这与我的jest设置有关,还是我应该用另一种方式来处理?

以下是我在选定的jest测试期间强制取消定义
窗口的操作

使用窗口进行测试=未定义 通过在文件顶部添加
@jest-environment节点
,可以在某些测试文件中强制取消定义窗口

测试窗口未定义。spec.js

/**
*@jest环境节点
*/
//^必须位于文件的顶部
test('在此测试文件中使用jsdom',()=>{
console.log(窗口)
//将在节点环境中打印“未定义”
});
窗口测试 如果需要
窗口
对象,只需删除顶部的语句即可


我能够使用下面的模式测试
窗口
未定义的场景。它允许您在同一文件中运行带有和不带
窗口的测试。不需要在文件顶部添加
@jest环境节点

descripe('窗口未定义时',()=>{
常量{window}=全局;
以前(()=>{
//@ts忽略
删除global.window;
});
毕竟(()=>{
global.window=窗口;
});
它('运行时没有错误',()=>{
...
});
});

您的答案可能就在这里。如果您对替换单个方法有任何疑问,请告诉我。对于我来说,这是可能的,但我想使整个窗口不被定义,我无法用该解决方案实现这一点。这一个可能就是您的答案:是的,这就是我需要的,谢谢:)这个答案与问题的实质并不一致。在您的示例中,仅检查是否定义了窗口。Jarosław Wlazło询问如何模拟它以返回未定义,因为jsdom将使窗口可用。@ConstantinChirila使用文件顶部的
@jest环境节点
使
窗口
对象未定义。。。我会把答案再提高一点这个答案肯定对我有帮助。当编写要在节点和浏览器中运行的代码时,使用它可以获得100%的覆盖率。