javascript - Jasmine ile birden fazla sınıf/nesne metodunu nasıl gözetlersiniz
Aşağıdakinden daha kısa bir şekilde nesne metotlarını izlemek mümkün mü?
describe('blah blah', () => {
let localStorageSetSpy, localStorageGetSpy;
beforeEach(() => {
localStorageGetSpy = spyOn(window.localStorage, 'getItem');
localStorageSetSpy = spyOn(window.localStorage, 'setItem');
});
it('yada yada', () => {
// blah blah
})
})
Getter ve setter'ı aynı nesnenin bir parçası olarak izleyebilseydim güzel olurdu. window.localStorage'ı jasmine.createSpyObj(...)'ye yeniden atamayı denedim ama bunun readonly olduğu konusunda şikayetler aldım.
Herhangi bir fikir?
Cevap #1
describe('blah blah', () => {
const localStorageSpy = jasmine.createSpyObj('localStorage',['getItem','setItem']) // Jasmine automatically create a spy for you
beforeEach(() => {
});
it('yada yada', () => {
localStorageSpy.getItem = (() => { return mockReturnValue(...) }) // Do your test here.
})
})
Belki bunu deneyebilirsin. Jasmine createSpyObj ayrıca için de casus oluşturacaktır. Ancak, localStorage için, bir sahte uygulama ile çıkman iyi olur.
Cevap #2
Eğer testinizde sadece bir nesneyle etkileşimde bulunmak istiyorsanız, belki bunu yapabilirsiniz
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(...)
})
})
