javascript - Cum să spionezi mai multe metode ale unei clase/obiect cu Jasmine
Există o modalitate mai scurtă de a spiona metodele unui obiect decât cea următoare?
describe('blah blah', () => {
let localStorageSetSpy, localStorageGetSpy;
beforeEach(() => {
localStorageGetSpy = spyOn(window.localStorage, 'getItem');
localStorageSetSpy = spyOn(window.localStorage, 'setItem');
});
it('yada yada', () => {
// blah blah
})
})
Ar fi frumos dacă aș putea spiona getter-ul și setter-ul ca parte a aceluiași obiect. Am încercat să reatribuiesc window.localStorage la jasmine.createSpyObj(...), dar am primit plângeri că este readonly.
Vreo idee?
Răspuns #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.
})
})
Poate poți încerca asta. Jasmine createSpyObj va crea și el un spy. Totuși, pentru localStorage este bine să vii cu o implementare mock.
Răspunsul #2
Dacă vrei doar să interacționezi cu un singur obiect în testul tău, poate poți face asta
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(...)
})
})
