Я использую jest для юнит-тестирования в React native.Часть моего пользовательского интерфейса внутри компонента загружается, только когда определенное состояние компонента (noRecord) имеет значение true.Вот фрагмент кода:
{this.state.noRecord ?
<View>
<TouchableOpacity id="navEnqtrn" onPress={() => this.navEnqtrn()}>
<Text style={styles.courseEnquiry}> Learning enquiry </Text>
</TouchableOpacity>
<View> : <View> <Text>Some other view here..</Text></View>
}
Вот мой пример модульного теста:
it('checks navEnqtrn' , () => {
const wrapper = shallow(<Online navigation = {navigation}/>);
wrapper.state.noRecord = true;
const instance = wrapper.instance();
const navEnqtrnSpy = jest.spyOn(instance,"navEnqtrn");
wrapper.find('#navEnqtrn').simulate('press');
expect(navEnqtrnSpy).toBeCalled();
});
Я получаю следующую ошибку:
Method “simulate” is only meant to be run on a single node. 0 found instead.
at ShallowWrapper.single (node_modules/enzyme/build/ShallowWrapper.js:1618:17)
at ShallowWrapper.simulate (node_modules/enzyme/build/ShallowWrapper.js:929:21)
at Object.<anonymous> (__tests__/online-test.js:100:28)
at tryCallTwo (node_modules/promise/lib/core.js:45:5)
at doResolve (node_modules/promise/lib/core.js:200:13)
at new Promise (node_modules/promise/lib/core.js:66:3)
at tryCallOne (node_modules/promise/lib/core.js:37:12)
at node_modules/promise/lib/core.js:123:15
at flush (node_modules/asap/raw.js:50:29)
at _combinedTickCallback (internal/process/next_tick.js:131:7)
at process._tickCallback (internal/process/next_tick.js:180:9)
Как мнесмоделировать событие прессы в этом случае?