Как получить доступ к элементу в реакции native, который загружается, когда определенное состояние компонента является истинным? - PullRequest
0 голосов
/ 29 мая 2018

Я использую 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)

Как мнесмоделировать событие прессы в этом случае?

1 Ответ

0 голосов
/ 29 мая 2018

Попробуйте добавить в мелкую упаковку функциональность .dive().Когда вы балуетесь с состоянием, это не правильный div, а не HOC

Как это

const wrapper = shallow(<Online navigation = {navigation}/>).dive();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...