Почему требуется свойство default.requireActual / getMockFromModule для доступа к экспортируемому модулю - PullRequest
0 голосов
/ 19 мая 2018

На основе https://github.com/facebook/jest/blob/master/examples/manual-mocks/models/user.js примеров я создал свой собственный ручной макет:

const RandomNumber = require.requireActual('../RandomNumber');
RandomNumber.prototype.generate = function() {
  return this.min;
};
export default RandomNumber;

Для этого модуля:

export default class {
  constructor(min, max) {
    this.min = min;
    this.max = max;
  }

  generate() {
    return Math.floor(Math.random() * (this.max - this.min + 1) + this.min);
  }
}

Однако я получил эту ошибку:

TypeError: Невозможно установить свойство 'generate' из неопределенного

Я выяснил, что мне нужно добавить .default к объекту, который возвращается из requireActual.То же самое относится и к коду, который использует getMockFromModule:

const RandomNumberMock = jest.genMockFromModule('../RandomNumber').default;
RandomNumberMock.prototype.generate.mockReturnValue(10);
export default RandomNumberMock;

. Я не видел упоминаний об этом в документах Jest, а в их примерах не используется свойство .default.

Есть идеи, почему в моей базовой настройке это необходимо?

1 Ответ

0 голосов
/ 23 октября 2018

Поскольку именно так работает require (CommonJS), кроме использования ES6 Modules, которое уже выполняет импорт по умолчанию.

Tl; DR;export default someClass ES6 похож на module.export = { default: someClass }

CommonJS, отметьте ответ out.

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