2016-02-01 2 views
7

Я пытаюсь протестировать собственный код реагирования на привод с помощью руководства this. Реакция native переопределяется реакцией, чтобы включить мелкую визуализацию и тестирование с помощью jestjs.Тестирование сенсорных событий в реакции native

Несмотря на то, что я могу проверить мелкие визуализированные компоненты (проверяя его присутствие и детей), я не могу проверить события касания.

handleTouch() { 
this.setState({ showDescription: !this.state.showDescription }); 
} 


render() { 
const description = this.state.showDescription ? (<Text style={styles.description}>{this.props.entry.description}</Text>) : null; 
return (
    <TouchableNativeFeedback onPress={() => this.handleTouch()}> 
    <View style={styles.rowContainer}> 
     <View style={styles.row}> 
     </View> 
     {description} 
    </View> 
    </TouchableNativeFeedback> 
) 
} 

Я пытаюсь проверить, если на прикосновение TouchableNativeFeedback, description тег оказаны. Реакция TestUtils обеспечивает Simulate, но это не сработало.

Это моя установка спецификации:

beforeEach(function() { 
    profileView = TestUtils.renderIntoDocument(<ProfileEntryView entry={entry}/>); 
    var touchableNativeFeedback = TestUtils.findRenderedComponentWithType(profileView, TouchableNativeFeedback); 
    TestUtils.Simulate.onTouchEnd(touchableNativeFeedback); 
}); 

Как я буду тестировать взаимодействие пользовательского интерфейса с использованием reactjs TestUtils для реакции родной?

ответ

4

Поскольку моделирование ReactTestUtils не имеет onTouchEnd или onPress события. Так что вам нужно добавить к фиктивному объекту mocks/react-native.js:

const NativeComponent = (type) => { 
    return React.createClass({ 
     render() { 
      var properties = {className: type}; 
      if (typeof this.props.onPress !== 'undefined') { 
       properties.onClick = this.props.onPress; 
      } 
      Object.assign(properties, this.props); 
      return (
       <div {...properties}>{this.props.children}</div> 
      ); 
     } 
}; 
... 
ReactNative.TouchableNativeFeedback = NativeComponent("TouchableNativeFeedback"); 

и обновить тестовый код:

var touchableNativeFeedback = TestUtils.findRenderedDOMComponentWithClass(profileView, 'TouchableNativeFeedback'); 
TestUtils.Simulate.click(touchableNativeFeedback); 

Нужны более коды from this page.

Смежные вопросы