Конструктор не определен для ложного класса с шуткой - PullRequest
0 голосов
/ 08 апреля 2020

В настоящее время я пытаюсь получить макет конструктора. Как написано в документации :

Чтобы смоделировать функцию конструктора, фабрика модулей должна вернуть функцию конструктора. Другими словами, фабрика модулей должна быть функцией, которая возвращает функцию - функцию более высокого порядка (HOF).

mockDataCompiler определено выше и является основным макетом для тестов.

Модуль макета (класс ES6) записывается следующим образом:

jest.mock('@/path/to/MyClass', () => {
  return function (obj: object) {
    return { compile: mockDataCompiler, setParameters: () => null, ...obj };
  };
});

и создается в основном классе следующим образом:

private myClass: MyClass = new MyClass(params);

Это приводит к следующим ошибкам в тест:

  • TypeError: Cannot read property 'setParameters' of undefined → так что макет не создается
  • [Vue warn]: Error in data(): "TypeError: _MyClass.MyClass is not a constructor" → нет конструктора

1 Ответ

0 голосов
/ 08 апреля 2020

Хорошо, я решил это во время написания вопроса.

Проблема заключалась в том, что RelatedProductsCompiler не был экспортом по умолчанию . Макет был также в неправильном объеме. Вот почему любой constructor был предоставлен.

jest.mock('@/utilities/planOverviewCompiler/RelatedProductsCompiler', () => {
  return { // Mock the whole module in this scope
    // Mock the RelatedProductsCompiler inside the module :
    RelatedProductsCompiler: function (params: PlanOverviewParameters) {
      return { compile: mockDataCompiler, setParameters: () => null, ...params };
    }
  };
});

Надеюсь, это поможет другим:)

...