Небольшое уточнение: в случае LocalStorage не содержит ключ этот фиктивный возврат undefined
, но реальный возвращает null
(ключ) метод GetItem должен вернуть текущее значение, связанное с данным ключом. Если данный ключ не существует в списке, связанном с с объектом, тогда этот метод должен вернуть значение null. https://www.w3.org/TR/webstorage/
spyOn(localStorage, 'getItem').and.callFake(function (key) {
return store[key] !== undefined ? store[key] : null;
});
Примечание: В предыдущем примере метод removeItem
был поругаем не
spyOn(localStorage, 'removeItem').and.callFake(function (key, value) {
delete store[key];
});
P.S. Я нашел другой способ написать тесты с локальным хранилищем без макета, возможно, это имеет смысл, работа с примитивами и localStorage может быть сложной задачей.
afterEach(() => {
localStorage.removeItem(testTokenKey);
});
Отлично. Это сработало. Не знаю, почему, но я тоже пытался издеваться над фабрикой. – tanmay