小编LHE*_*LHE的帖子

在玩笑中模拟 window.sessionStorage 的最佳方法是什么

下面是一个非常简单的 jest 单元测试,运行它时,你会得到类似的错误

无法窥探原始值;给定的未定义

类型错误:无法读取未定义的属性“getItem”

但是根据这篇文章的最后两条评论,localStorage 和 sessionStorage 已经添加到最新的 JSDOM 和 jest 中。如果使用jest-localstorage-mock并将其添加到我的 jest setupFiles 中,那么您将看到类似的奇怪错误

TypeError: object[methodName].mockImplementation 不是函数

所以我的问题是在玩笑中模拟 localStorage/sessionStorage 的最佳方法是什么。谢谢

describe('window.sessionStorage', () => {
    let mockSessionStorage;
    beforeEach(() => {
        mockSessionStorage = {};
        jest.spyOn(window.sessionStorage, "getItem").mockImplementation(key => {
            return mockSessionStorage[key];
        });
    });

    describe('getItem-', () => {
        beforeEach(() => {
            mockSessionStorage = {
                foo: 'bar',
            }
        });

        it('gets string item', () => {
            const ret = window.sessionStorage.getItem('foo');
            expect(ret).toBe('bar');
        });
    });
});
Run Code Online (Sandbox Code Playgroud)

下面是我的笑话配置

module.exports = {
    verbose: true, …
Run Code Online (Sandbox Code Playgroud)

javascript testing unit-testing reactjs jestjs

15
推荐指数
2
解决办法
9420
查看次数

标签 统计

javascript ×1

jestjs ×1

reactjs ×1

testing ×1

unit-testing ×1