Я не могу найти способ имитации импорта объектов при тестировании моего помощника ReactJ. Все примеры показывают, как имитировать импортированные функции, и никто не говорит о том, чтобы имитировать импортированные объекты.
Этот базовый вспомогательный объект, который я хочу смоделировать:
filters-state.helper.ts
:
export const FiltersStateHelper = {
toggleFilters: <T extends FiltersState>(state: T): T => ({
...state,
isOpen: !state.isOpen
})
};
Я использую его в помощнике состояний, который я тестирую:
search-view-state.helper.ts
:
import { FiltersStateHelper } from 'shared/filters/helpers/filters-state.helper';
export const SearchViewStateHelper = {
toggleFilters: <T extends SearchViewState>(state: T): T => ({
...state,
filters: FiltersStateHelper.toggleFilters(state.filters)
})
//... more methods
};
И в тесте зависимость от симуляции не работает, возможно, потому, что зависимости моего помощника уже разрешены до того, как я сказал, что шутить:
search-view-state.helper.spec.ts
:
import { SearchViewStateHelper as helper } from 'shared/search-view/helpers/search-view-state.helper';
describe('toggleFilters method', () => {
const spy = jest.fn();
jest.doMock('shared/filters/helpers/filters-state.helper', () => {
return {
toggleFilters: spy
};
});
const state = {};
it('should toggle filters', () => {
helper.toggleFilters(state);
expect(spy).toHaveBeenCalled();
});
});