общее количество элементов в элементе Picker при модульном тестировании - PullRequest
0 голосов
/ 27 апреля 2020

Отказ от ответственности: это часть упражнения для курса, который я прохожу.

Привет, я учусь на естественном языке и пишу несколько простых юнит-тестов. Компонент возвращает элемент Picker с 3 элементами. Вопрос состоит в том, чтобы утверждать, что в элементе Picker действительно есть 3 элемента. Я использую реагирующую нативную библиотеку тестирования. Какой правильный способ сделать это sh это?

appConfig. js:

  const appConfig = { "activeCourses" : ["react", "react-native", "angular"]}

ComponentCourseSelector. js:

  import appConfig from '../appConfig/appConfig';

 const ComponentCourseSelector: () => React$Node = () => {

  const styles = {
    height: 50,
    width: 210,
    color: '#000'
  }


  const courses = appConfig['activeCourses'];
  return (<><Picker
          testID="coursesSelector"
          style={styles}
         >
          {courses.map((prop, key) => {
            return (
              <Picker.Item
                label={prop}
                value={prop}
                key={prop}
              />
            );
          })}
        </Picker>
        </>
  );
};

export default ComponentCourseSelector;

ComponentCourseSelector.test. js:

import appConfig from '../appConfig/appConfig';
import { fireEvent, render } from '@testing-library/react-native'


fit('renders correct number of courses', () => {
    const { getByTestId, debug } = render(
        <ComponentCourseSelector/>
      )
     const totalActiveCourses = appConfig['activeCourses'].length
     const picker = getByTestId('coursesSelector')
     console.log(picker)
     expect(picker.items.length).toEqual(totalActiveCourses)
});

console.log () регистрирует компонент так же, как console.log () , Я сделал следующее, что работает, но это кажется неправильным:

   expect(picker['_fiber']['memoizedProps']['items'].length).toEqual(totalActiveCourses)

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

...