Как утверждать, что экспортируемая по умолчанию функция вызывается при издевательстве над модулем в Jest? - PullRequest
1 голос
/ 13 мая 2019

Я пытаюсь смоделировать внешнюю зависимость в моем тесте Jest.Моя цель состоит в том, чтобы проверить, что зависимость была вызвана с некоторыми заданными аргументами.

Зависимость экспортирует функцию по умолчанию, что затрудняет (невозможно?) Использование jest.SpyOn.

Я пытался использовать jest.mock следующим образом:

const callback = jest.fn(() => 'output');
jest.mock('dependecy', () => callback);

it('call dep with some args' () => {
    ...
    expect(callback).toBeCalledWith('arg1' , 'arg2')
});

Также пытался jest.mock('dependecy', () => ({ default: callback }));.Но и там, где это было успешно, я думал, что это из-за подъема jest.mock.Таким образом, я попробовал jest.doMock, но это, похоже, даже не вызывает / не создает мой макет.

Любые идеи о том, как проверить, был ли вызван метод для внешней зависимости, которая экспортирует функцию по умолчанию в jest

1 Ответ

2 голосов
/ 14 мая 2019

Вот простой рабочий пример, который должен помочь вам:

code.js

import dependency from 'dependency';

export const func = () => 'returned ' + dependency();

code.test.js

import { func } from './code';
import dependency from 'dependency';  // <= dependency will be...

jest.mock('dependency', () =>
  jest.fn(() => 'mocked')  // <= ...this mock function
);

describe('func', () => {
  it('should call dependency', () => {
    const result = func();
    expect(result).toBe('returned mocked');  // Success!
    expect(dependency).toHaveBeenCalled();  // Success!
  });
});

Обратите внимание, что заводская функция модуля должна быть автономной, чтобы ее можно было поднять babel-jest.

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