Как проверить, получает ли localStorage элемент, который я установил в функции? - PullRequest
3 голосов
/ 25 февраля 2020

В данный момент пытаюсь запустить модульный тест для функции аутентификации. Я написал фиктивную функцию, которая в основном выполняет функцию аутентификации для соблюдения NDA.

Аутентификация. js

export const myTestFunction = param => {
  console.log(param);
  localStorage.setItem("Test", param)
}

index.test. js

import {myTestFunction} from "../../redux/actions/ApiAuthAction";

const localStorageMock = {
    getItem: jest.fn(),
    setItem: jest.fn(),
    clear: jest.fn()
  };
  global.localStorage = localStorageMock;

test("Test to see myTestFunction sets localStorage to the param value", () => {
    let param = "Hello"
    myTestFunction(param);
    expect(localStorageMock.setItem).toBeCalledWith("Test");
});

Когда я запускаю тест, он возвращает следующее:

expect(jest.fn()).toBeCalledWith(expected)

    Expected mock function to have been called with:
      ["Test"]
    But it was not called.

      73 |     let param = "Hello"
      74 |     myTestFunction(param);
    > 75 |     expect(localStorageMock.setItem).toBeCalledWith("Test");
         |                                      ^

      at Object.toBeCalledWith (src/__tests__/reducers/index.test.js:75:38)

Я не уверен, что делаю неправильно Вот. Я создаю макет localStorage. Я бросил функцию в тест, и он все еще выбрасывает этот неудавшийся тест, потому что он не вызывается. Помощь?

РЕДАКТИРОВАТЬ: Весь смысл этого теста состоит в том, чтобы увидеть, если это localStorage.setItem("Test, param); вызывается или нет.

1 Ответ

0 голосов
/ 26 февраля 2020

Решение, которое я в конечном итоге с помощью был:. expect(localStorage.getItem("Test")).toBeDefined();, но я рад услышать, если кто-то имеет более Dynami c решение

...