Javascript 如何使用Jasmine监视多个类/对象方法
有没有比下面更简单的方法来监视对象方法Javascript 如何使用Jasmine监视多个类/对象方法,javascript,angular,typescript,unit-testing,jasmine,Javascript,Angular,Typescript,Unit Testing,Jasmine,有没有比下面更简单的方法来监视对象方法 description('blah-blah',()=>{ 让localStorageSetSpy、localStorageGetSpy; 在每个之前(()=>{ localStorageGetSpy=spyOn(window.localStorage,'getItem'); localStorageSetSpy=spyOn(window.localStorage,'setItem'); }); 它('yada-yada',()=>{ //废话 }) })
description('blah-blah',()=>{
让localStorageSetSpy、localStorageGetSpy;
在每个之前(()=>{
localStorageGetSpy=spyOn(window.localStorage,'getItem');
localStorageSetSpy=spyOn(window.localStorage,'setItem');
});
它('yada-yada',()=>{
//废话
})
})
如果我可以监视getter和setter作为同一对象的一部分,那就太好了。我尝试将window.localStorage
重新分配给jasmine.createSpyObj(…)
,但收到了关于它是只读的投诉
有什么想法吗?如果您只想在测试中与一个对象交互,也许您可以这样做
describe('blah blah', () => {
const localStorageSpy = { getItem: undefined, setItem: undefined };
beforeEach(() => {
localStorageSpy.getItem = spyOn(window.localStorage, 'getItem');
localStorageSpy.setItem = spyOn(window.localStorage, 'setItem');
});
it('yada yada', () => {
localStorageSpy.getItem.mockReturnValue(...)
})
})
如果您只想在测试中与一个对象交互,也许您可以这样做
describe('blah blah', () => {
const localStorageSpy = { getItem: undefined, setItem: undefined };
beforeEach(() => {
localStorageSpy.getItem = spyOn(window.localStorage, 'getItem');
localStorageSpy.setItem = spyOn(window.localStorage, 'setItem');
});
it('yada yada', () => {
localStorageSpy.getItem.mockReturnValue(...)
})
})
我会使用一些方法或函数来包装window.localStorage操作。例如store()
(调用getItem)和retrieve()
(调用setItem)
一些好处:
您将能够非常轻松地监视和模拟上述功能
将来,只要store()
和retrieve()
的原型保持不变,您就可以更改这些函数的行为,而不必关心内部的操作
我会使用一些方法或函数来包装window.localStorage操作。例如store()
(调用getItem)和retrieve()
(调用setItem)
一些好处:
您将能够非常轻松地监视和模拟上述功能
将来,只要store()
和retrieve()
的原型保持不变,您就可以更改这些函数的行为,而不必关心内部的操作
也许你可以试试这个。Jasmine createSpyObj也将为您创建间谍。但是,对于localStorage来说,最好是提供一个模拟实现
也许你可以试试这个。Jasmine createSpyObj也将为您创建间谍。但是,对于localStorage来说,最好是提供一个模拟实现