我正在测试一个在方法中使用ToastAndroid组件的react原生组件,当我使用酶测试时,我一直得到错误提示 TypeError: _reactNative.ToastAndroid.show is not a function
我使用的是 react-native-mock-renderer
我的组件有一个方法被调用的onPress handler。
validateAndProceed = () => {
ToastAndroid.show(
'Show toast',
ToastAndroid.SHORT,
);
};
和我的测试来验证
it('should validate and process', () => {
const wrapper = shallow(<Component
/>);
const instance = wrapper.dive().instance();
jest.spyOn(instance, 'validateAndProceed');
instance.validateAndProceed();
expect(instance.validateAndProceed).toHaveBeenCalled();
});
我为ToastAndroid创建了一个自定义的模拟。
const ToastAndroid = {
SHORT: '',
LONG: '',
TOP: '',
BOTTOM: '',
CENTER: '',
show: jest.fn(),
showWithGravity: jest.fn(),
showWithGravityAndOffset: jest.fn(),
};
module.exports = ToastAndroid;
仍然是一个不工作的
你不需要对整个模块进行嘲讽。我只需要模拟相关的函数和常量就可以了。
例如:_reactNative.ToastAndroid.show不是我的函数......你不需要模拟整个模块,只需要模拟相关的函数和常量就可以了。
ToastAndroid.showWithGravity = jest.fn();
ToastAndroid.show = jest.fn();