下面是一个非常简单的 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)