Как смоделировать экспорт const с помощью Jest для каждого конкретного случая? - PullRequest
0 голосов
/ 18 мая 2018

У меня есть модуль constants.js, который возвращает несколько константных объектов:

export const SERVER = {
  HOST: 'localhost',
  PORT: 8000,
};

export const PATHS = {
  LOGIN: '/login',
  LOGOUT: '/logout',
};

Я использую PactJS , и для того, чтобы я мог выполнять параллельные тесты с Jest, ядолжны использовать разные порты в каждом it() тестовом примере.Поэтому я хочу изменить значение SERVER.PORT на beforeEach().

Это то, что у меня пока, что не работает:

beforeEach(() => {
  port = getRandomPort();

  jest.doMock('./constants', () => ({
    SERVER: {
      PORT: port,
    },
  })
});

Тестируемый модуль, когдаloading constants.js загружает его с фактическими значениями вместо проверенных.Так что это не работает.

Я также пытался использовать jest.mock() вместо jest.doMock() и возвращать фиктивную функцию, поэтому я могу изменить .mockReturnValue(), так как constants.js не экспортирует функцию, но объект, делающий это, не имеет смысла, поэтому он тоже не работает.

Как мне этого добиться?

1 Ответ

0 голосов
/ 10 декабря 2018

Я закончил тем, что создал фиктивный файл для констант __mocks__/constants.js и мне потребовался фактический файл внутри:

// __mocks__/constants.js
const actualConstants = require.requireActual('../constants');

export default {
  ...actualConstants,

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