Как издеваться над объектом в шутку - PullRequest
0 голосов
/ 05 мая 2020

Я пытаюсь имитировать функцию объекта с помощью Jest и Typescript, и это просто не работает. Вот краткая версия того, что у меня есть:

// myModule.ts

export const Foo = {
  doSomething: () => {
    // ... does something
    console.log('original implementation');
  }
}

Затем в моем тесте:

jest.mock('.myModule.ts', () => {
  return {
    Foo: {
      doSomething: jest.fn().mockImplementation(() => {
        console.log('mock implementation')
      })
    }
  }
})

// .. further down in the test
Foo.doSomething();

Разве не следует вызывать console.log('mock implementation'), когда я звоню Foo.doSomething()? Это не ошибка, и он больше не вызывает исходную реализацию, но он также не вызывает мою mockImplementation.

1 Ответ

1 голос
/ 05 мая 2020

Попробуйте следующее:

import { Foo } from './foo';

jest
  .spyOn(Foo, 'doSomething')
  .mockImplementation(() => console.log('mock implementation'));

Foo.doSomething();
...