reactjs - Jest.js 强制窗口未定义

标签 reactjs testing jestjs enzyme

我正在使用 Jest + enzyme 设置进行测试。如果定义了窗口,我有一个有条件地渲染某些内容的函数。

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


    it('makes something when window is not defined', () => {
       window = undefined;
       expect(myFunction()).toEqual(thisWhatIWantOnUndefinedWinow);
    });

但即使我强制窗口未定义,它也达不到预期的情况,窗口始终是窗口(jsdom?)

这是我的 Jest 设置的问题还是我应该以其他方式处理这个问题?

最佳答案

我可以使用以下模式测试 window 未定义的场景。它允许您在同一文件中运行带或不带window 的测试。不需要在文件顶部添加 @jest-environment 节点

describe('when window is undefined', () => {
    const { window } = global;
    beforeAll(() => {
      // @ts-ignore
      delete global.window;
    });
    afterAll(() => {
      global.window = window;
    });
    
    it('runs without error', () => {
      ...
    });
});

    

关于reactjs - Jest.js 强制窗口未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51425746/

相关文章:

django - 如何测试 Django 装饰器?

Django测试环境

node.js - 在 Jenkins 中运行时,NPM 测试神秘地卡住了

javascript - 我需要从不同的函数调用 ClearInterval

javascript - 如何在 Reactreflux 中将我的商店设置为私有(private)

javascript - JEST 模拟是否可能被彼此覆盖?

unit-testing - 使用 Jest 手动模拟多个 CommonJS 模块

javascript - 如何使用 Typescript 创建 Jest 自定义环境?

javascript - 即使值相同, useState 也会重新加载

javascript - React Material-UI Autocomplete custom `no options` text