Шутка: как восстановить предыдущую макетную реализацию (не оригинал) - PullRequest
1 голос
/ 05 апреля 2019

У меня есть набор из 3 тестов, первый имеет базовую макетированную реализацию:

Team.query = jest.fn(() => ({
  findOne: () => {
    return {
      is_disabled: false,
    };
  },
}));

Во втором тесте я выполняю Team.query.mockImplementationOnce с вышеупомянутым, но я изменяю is_disabled на true.

В третьем тесте я хочу восстановить его до реализации jest.fn, описанной выше. Это возможно?

1 Ответ

0 голосов
/ 05 апреля 2019

Вы в порядке, дополнительная работа не требуется.

Поскольку Team.query является фиктивной функцией, она автоматически вернется к ранее имитированной реализации после одного вызова, когда она была переопределена с помощью mockImplementationOnce:

const Team = { };

Team.query = jest.fn(() => ({
  findOne: () => {
    return {
      is_disabled: false,
    };
  },
}));

test('Team.query', () => {
  expect(Team.query().findOne().is_disabled).toBe(false);  // Success!

  Team.query.mockImplementationOnce(() => ({ findOne: () => ({ is_disabled: true }) }));
  expect(Team.query().findOne().is_disabled).toBe(true);  // Success!

  expect(Team.query().findOne().is_disabled).toBe(false);  // Success!

  Team.query.mockImplementationOnce(() => ({ findOne: () => ({ is_disabled: 'some text' }) }));
  expect(Team.query().findOne().is_disabled).toBe('some text');  // Success!

  expect(Team.query().findOne().is_disabled).toBe(false);  // Success!
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...