Лучшим подходом было бы протестировать против storeCardDesigns
(это охватывает оба if/else
случая - в противном случае, чтобы покрыть только случай else
, вы можете просто обновить реквизит и ожидать, что storeCardDesigns не будет вызван) :
it("calls storeCardDesigns if the 'availableCardDesigns' prop changes", () => {
const storeCardDesigns = jest.fn();
const availableCardDesigns = [{ id: 'test1' }, { id: 'test2' }];
const initialProps = {
isLoading: false, // why is this a function? why not a simple boolean?
loadedWithErrors: false, // why is this a function? why not a simple boolean?
storeCardDesigns, // utilizes mock fn above
availableCardDesigns: [], // initially empty
};
// shallow wrap component with initial props
const wrapper = shallow(<GalleryModal {...initialProps} />);
// update availableCardDesigns prop to trigger CDU lifecycle
wrapper.setProps({ availableCardDesigns });
expect(storeCardDesigns).toHaveBeenCalledWith(availableCardDesigns);
// clear mock
storeCardDesigns.mockClear();
// update another prop update to trigger CDU
wrapper.setProps({ isLoading: true });
expect(storeCardDesigns).toHaveBeenCalledTimes(0);
});