не могу очистить mock-функцию с mock.mockReset - PullRequest
0 голосов
/ 30 марта 2020

Я хочу переделать функцию в тесте. Но реализация всегда остается первой, которую я реализую. Я попытался макетировать функцию, а затем поместить ее в фиктивный объект. После каждого теста я пытаюсь очистить реализацию, потому что, очевидно, я использую другой макет в другом тесте. Это мой тест

describe("auth.actions", () => {
  const loginUserMock = jest.fn();

  afterEach(() => {
    loginUserMock.mockReset();
  });
  jest.mock("@services/auth/AuthService", () => {
    return function() {
      return {
        loginUserByEmailAndPassword: loginUserMock
      };
    };
  });
  it("logs in user correctly", () => {
    loginUserMock.mockImplementation(
      () => new Promise((resolve, reject) => resolve(true))
    );
    const expectedActions = [
      { type: authConstants.LOGIN_REQUEST, loginEmail: "test@test.de" },
      { type: authConstants.LOGIN_SUCCESS }
    ];
    const store = mockStore(initialState);

    return store
      .dispatch(authActions.login("test@test.de", "password"))
      .then(() => {
        // return of async actions
        expect(store.getActions()).toEqual(expectedActions);
      });
  });
  it("returns error", () => {
    loginUserMock.mockImplementation(
      () => new Promise((resolve, reject) => resolve(false))
    );
    const expectedActions = [
      { type: authConstants.LOGIN_REQUEST, loginEmail: "test@test.de" },
      {
        type: authConstants.LOGIN_FAILURE,
        error: new Error("Login fehlgeschlagen")
      }
    ];
    const store = mockStore(initialState);

    return store
      .dispatch(authActions.login("test@test.de", "password"))
      .then(() => {
        // return of async actions
        expect(store.getActions()).toEqual(expectedActions);
      });
  });
});

Первый макет работает (потому что его первый). Другой макет все еще разрешается, поэтому тест не пройден.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...