Как проверить аргумент обратного вызова реагировать родной - PullRequest
0 голосов
/ 24 сентября 2018

У меня есть нативный компонент, который выглядит следующим образом:

export class Estimate extends PureComponent {
  setRef =
    (ref) => {
      this.estimateForm = ref
    }

  render () {
    const { onPress } = this.props
    return (
      <Form
        name="estimateForm"
        ref={this.setRef}
      >
        <Actions style={{ alignItems: 'flex-end' }}>
          <Button
            type="text"
            style={{ marginBottom: -em(0.5) }}
            onPress={() => onPress(this.estimateForm.values)}
            title={t('estimateShippingAndTax')}
          />
          <TextInput
            placeholder={t('postalCode')}
            name="estimate"
            style={{ width: 100 }}
            validate="postalCode"
          />
        </Actions>
      </Form>
    )
  }
}

мой тест на шутку / фермент выглядит следующим образом:

let obj
let onPressFunction
describe('Estimate', () => {
  beforeAll(() => {
    onPressFunction = jest.fn()
    obj = shallow(<Estimate onPress={onPressFunction} />)
  })

  test('Text gets returned with onPress', () => {
    console.log(obj.html())
    const value = { values: { estimate: '61606' } }
    obj.instance().setRef(value)
    obj.find('Button').first().simulate('onPress')
    expect(onPressFunction).toHaveBeenCalledWith('61606')
  })
})

Я не могу пройти тест, хотямой компонент работает как положено.Мой тест завершается неудачно с:

Ожидаемая фиктивная функция была вызвана с: ["61606"] Но она не была вызвана.

1 Ответ

0 голосов
/ 24 сентября 2018

Ваш ферментный тест должен имитировать событие press, а не событие onPress.Имя события «press».

obj.find('Button').first().simulate('press')

Если посмотреть на ваши теги, это проект React Native, и этот поток в репозитории Enzyme рекомендует попробовать вызвать метод напрямую, а неопираясь на simulate:

obj.find('Button').first().props().onPress()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...