Возникли проблемы с поиском элементов в нативной библиотеке тестирования - PullRequest
0 голосов
/ 20 марта 2020

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

В приведенном ниже примере я ожидаю, что тест пройден, но элемент не может быть найден.

У меня такое чувство, что я что-то делает очень неправильно, но я не могу найти много информации об этом. Любая помощь будет принята с благодарностью [:

Edit ** Кажется, что это нормально, если я использую TestID, но разве я не смогу запросить его с помощью текстового комментария? Я не люблю использовать тестовые идентификаторы, за исключением случаев, когда это абсолютно необходимо, поскольку это не для пользователя.

Вот компонент, который я хочу протестировать

import React from 'react';
import {Text, View} from 'react-native';
import {GITHUB_COLORS} from '../constants/colors';
import styles from './RepoCard.style';
import truncate from '../utilities/truncate';

function RepoCard({repo}) {
  return (
    <View style={styles.card}>
      {repo && (
        <>
          <Text style={styles.title}>{truncate(25, repo.name)}</Text>
          {repo.description && (
            <Text style={styles.description}>
              {truncate(60, repo.description)}
            </Text>
          )}
          {repo.language && (
            <View style={styles.langauge}>
              <View
                style={[
                  styles.languageColor,
                  {
                    backgroundColor: GITHUB_COLORS[repo.language.toLowerCase()],
                  },
                ]}
              />
              <Text style={styles.text}>{repo.language}</Text>
            </View>
          )}
        </>
      )}
    </View>
  );
}

export default RepoCard;

Вот тестовый файл

import React from 'react';
import {render, wait} from '@testing-library/react-native';
import RepoCard from './RepoCard';
import {REPOS} from '../testing/mocks/repos';

test('displays the repo name', async () => {
  const testRepo = REPOS[0];
  const {queryByText} = render(<RepoCard repo={testRepo} />);
  const name = testRepo.name;

  await wait(() => expect(queryByText(name)).toBeTruthy());
});

И, наконец, вот объект репо, я дважды проверил его, и все, что ему нужно, должно быть в нем.

export const REPOS = [
  {
    name: 'AndroidPython3',
    language: 'Python',
    description: 'This is a mock description',
  },
  {
    name: 'arduino-i2c-scanner',
    language: 'C++',
    description: 'Simple Arduino I2C scanner as des',
  },
];

Я также создал песочницу для кода, хотя я и не Не думаю, что он действительно может запустить тесты, так как он использует реактивную нативную сеть.

https://codesandbox.io/s/gallant-tereshkova-3biqj

1 Ответ

0 голосов
/ 20 марта 2020

Я понял это, я пропустил следующее в моей конфигурации jest

+ preset: '@testing-library/react-native'
- preset: 'react-native'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...