Неглубокий рендерер выплевывает пустой реактивный компонент - PullRequest
0 голосов
/ 08 октября 2019

Я пытаюсь протестировать собственное приложение с энзимом:

import React from 'react';
import { View, Text, TouchableWithoutFeedback, TouchableOpacity, ImageBackground, Image, TextInput, Platform, ScrollView} from 'react-native'
import { shallow, mount } from 'enzyme';
import LoginForm from '../LoginForm.js';
import Root from '../../Root.js'
import StylishInput from '../common/StylishInput';


it('shows a login form', () => {
  const wrapped = shallow(<Root><LoginForm /></Root>);
  console.log(wrapped)
  const componentInstance = wrapped.instance();
  componentInstance.componentWillMount();
  expect(wrapped.find(StylishInput).length).toEqual(2);
  expect(wrapped.find(TextInput).length).toEqual(2);
})

Однако упакованный всегда пустой компонент, а componentInstance null. Я не понимаю, поскольку LoginForm существует, и Root - это компонент, который я создал, чтобы обернуть мои проверенные компоненты внутри провайдера. Вот ссылка на весь проект, если необходимо: https://github.com/davidgeismar/timeo-mobile/blob/enzyme/src/components/tests/LoginForm.test.js

1 Ответ

0 голосов
/ 14 октября 2019

Мне бы очень хотелось посмотреть, как выглядит ваш корень, чтобы быть более точным, но вот предположение.

//Try something like this. I dont know how you root looks like, but im making a few guesses.
it('shows a login form', () => {
  //try shallowing it like this with props if you have any. I am guessing that Loginform is inside of you Root
  const wrapped = shallow(<Root {...props}/>);
  console.log(wrapped)
  const componentInstance = wrapped.instance();
  //do not use componentWillMount as it is deprecated use componentDidMount instead
  componentInstance.componentDidMount();
  expect(wrapped.find(LoginForm).length).toEqual(1);
  expect(wrapped.find(TextInput).length).toEqual(2);
})
...