React Native Enzyme Jest props.onPress не является функцией

При попытке написать тест, если я вызываю родительскую функцию из дочернего элемента, он возвращает

props.onPress () не является функцией

Я предполагаю, что мне нужно вручную передать реквизит для пресса в тесте. Но я чувствую, что это может победить цель тестирования того, что существует в структуре кода.

родитель

export default class Parent extends React.Component {
   constructor(){
     super()
   }

   _method(){
     return "Something"
   }

   render(){
    return{
      <Child onPress={this._method.bind(this) }
    }
   }
}

ребенок

export default (Child = (props) => {
   const _childMethod = () => {
     return props.onPress()
   }

   return{
     <View>
         <TouchableOpacity onPress={() => { return _childMethod() }}>

        </TouchableOpacity>
    </View>
   }

})

Контрольная работа

import "react-native"
import React from "react"
import Enzyme, {shallow, render} from "enzyme"
import Parent from "path/to/parent"
import Child from "path/to/child"

Enzyme.configure({adapter: new Adapter()})
const wrapper = shallow(<Child />)

it("Should return something", () => {
  console.log(wrapper.props().onPress())
})

react-native,jest,enzyme,

0

Ответов: 1


0

в вашем коде есть некоторые ошибки, прежде всего операторы return должны использовать () вместо {}. Если вы используете {} в операторе return метода рендеринга компонента, он выдает ошибку.

Реквизиты, которые вы тестируете, являются функцией дочернего компонента TouchableOpacity, а не реквизита дочернего компонента.

Чтобы проверить его правильно, вы должны использовать console.log(wrapper.props().children.props.onPress)

с этим я получил этот ответ:

PASS  __tests__dummy.test.js
  ? Console    
    console.log __tests__dum

my.test.js:13
  [Function: onPress]

Надеюсь, что это помогло.

Кронштейн задает полезную ссылку: http://jamesknelson.com/javascript-return-parenthesis/

реагирует родной, шутка, фермент,
Похожие вопросы
Яндекс.Метрика