Jest es6 класс макет возвращает неопределенный - PullRequest
0 голосов
/ 04 мая 2020

У меня есть простой класс, который я хочу смоделировать, и по какой-то причине jest возвращает undefined.

Вот код:

import { MyClass as myClass } from './my-class'; 
jest.mock('./my-class', () => jest.fn());
console.log(myClass); // undefined

Когда я регистрирую myClass, я получаю undefined.

Если я высмеиваю без насмешки реализацию, я получаю это:

import { MyClass as myClass } from './my-class'; 
jest.mock('./my-class');
console.log(myClass);

Код выше регистрирует: function MyClass() {return mockConstructor.apply(this,arguments);}

, который не допускает насмешки, так как не является jest.fn() и не имеет ни одного из полезных методов, таких как mockImplementation.

Как правильно это сделать?

1 Ответ

0 голосов
/ 05 мая 2020

Вы неправильно смоделировали модуль my-class. Вы используете Named Exports, вам также нужно высмеивать это.

Например,

my-class.ts:

export class MyClass {}

my-class.test.ts:

import { MyClass as myClass } from './my-class';
jest.mock('./my-class', () => ({ MyClass: jest.fn() }));
console.log(myClass);

Вывод:

  console.log
    { [Function: mockConstructor]
      _isMockFunction: true,
      getMockImplementation: [Function],
      mock: [Getter/Setter],
      mockClear: [Function],
      mockReset: [Function],
      mockRestore: [Function],
      mockReturnValueOnce: [Function],
      mockResolvedValueOnce: [Function],
      mockRejectedValueOnce: [Function],
      mockReturnValue: [Function],
      mockResolvedValue: [Function],
      mockRejectedValue: [Function],
      mockImplementationOnce: [Function],
      mockImplementation: [Function],
      mockReturnThis: [Function],
      mockName: [Function],
      getMockName: [Function] }
...