gpt4 book ai didi

javascript - 如何用 jasmine 监视 localStorage 方法

转载 作者:行者123 更新时间:2023-11-29 23:22:13 26 4
gpt4 key购买 nike

假设我有一段 JavaScript 代码:

function modifiesLocalStorage() {
var someBoolean = false;
if(localStorage.getItem('someKey') === 'true'){
localStorage.removeItem('someKey');
someBoolean = true;
}
return someBoolean;
}

然后我有一个 Jasmine 测试来测试这个方法:

it('should return true', function(){
spyOn(localStorage, 'removeItem');
spyOn(localStorage, 'getItem').and.returnValue('true');
var returnValue = modifiesLocalStorage();
expect(localStorage.getItem).toHaveBeenCalled(); //Error in this line
expect(returnValue).toBeTruthy();
});

执行此测试时出现以下错误: Error: <toHaveBeenCalled> : Expected a spy, but got Function.这是什么错误,我该如何解决?

我在 headless 模式下使用 Firefox 45.9.0 浏览器来运行测试。

最佳答案

根据这个问题的答案: Expected a spy, but got Function我们需要进入实际的方法,在本例中是在 proto 上。

如果我像下面这样修改我的测试,测试就会通过:

it('should return true', function(){
spyOn(localStorage.__proto__, 'removeItem');
spyOn(localStorage.__proto__, 'getItem').and.returnValue('true');
var returnValue = modifiesLocalStorage();
expect(localStorage.__proto__.getItem).toHaveBeenCalled();
expect(returnValue).toBeTruthy();
});

由于 __proto__ 已弃用,我们还可以使用 Object.getPrototypeOf(localStorage) 获取 localStorage 对象的原型(prototype)

关于javascript - 如何用 jasmine 监视 localStorage 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50272262/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com