У меня есть следующий тестовый пример
//to mock props
const createTestProps = (props) => ({
...props,
processDecision: jest.fn(),
navigation: {
getParam: jest.fn(),
navigate: jest.fn(),
},
});
describe('TermsAndConditionsScreen', () => {
let props, wrapper;
beforeEach(() => {
props = createTestProps({});
wrapper = shallow(<TermsAndConditionsScreen {...props} />);
});
it('should invoke the processDecision twice', () => {
wrapper = shallow(<TermsAndConditionsScreen {...props} />);
wrapper.dive().find(Button).first().props().onPress();
wrapper.dive().find(Button).last().props().onPress();
expect(props.processDecision).toHaveBeenCalledTimes(2);
});
});
По какой-то причине он не обнаруживает props.processDecision. но если я скажу это так, то все работает отлично:
it('should invoke the processDecision twice', () => {
let mockFn = jest.fn();
TermsAndConditionsScreen.prototype.processDecision = mockFn;
wrapper = shallow(<TermsAndConditionsScreen {...props} />);
wrapper.dive().find(Button).first().props().onPress();
wrapper.dive().find(Button).last().props().onPress();
expect(mockFn).toHaveBeenCalledTimes(2);
});
В чем разница, пожалуйста? Заранее спасибо