в моем приложении «Resact + Redux» у меня есть действие, которое, помимо возврата типа и полезной нагрузки, также меняет localStorage, например:
export const cancel = () => {
localStorage.removeItem("MyAppData");
return { type: types.USER_CANCEL};
};
мой тест выглядит так:
test("user cancels", () => {
const action = actions.cancel();
expect(action).toEqual({
type: types.USER_CANCEL
});
});
не пишу тест для локального хранилища, я получаю
● user cancels
ReferenceError: localStorage is not defined
33 |
34 | export const cancel = () => {
> 35 | localStorage.removeItem("MyAppData");
| ^
36 | return { type: types.USER_CANCEL};
37 | };
38 |
at Object.localStorage [as cancel] (src/actions/AllActions.js:35:3)
at Object.cancel (__test__/actions/AllActions.test.js:56:26)
Поэтому я сделал макет для локального хранения
const mockStorage = {};
const localStorage = {
setItem: (key, val) => Object.assign(mockStorage, { [key]: val }),
getItem: key => mockStorage[key],
removeItem: key => {delete mockStorage[key];console.log("Deleted: ", key);},
clear: () => mockStorage
};
export default localStorage;
либо импортируя эту макет, либо используя localStorage API, я все еще получаю ту же ошибку
Я запутался в том, как мне проверить, что при вызове cancel()
также вызывается localStorge.removeItem
или ключ и значение удаляются?