Как смоделировать LayoutAnimation при тестировании React Native с помощью Jest - PullRequest
1 голос
/ 24 января 2020

Я использую Jest и act-native-testing-library для тестирования моих компонентов.

В одном из моих компонентов у меня есть следующий код:

const handleToggleFilters = () => {
  LayoutAnimation.configureNext(LayoutAnimation.Presets.spring);
  setPostFiltersActive(!postFiltersActive);
};

Однако, при тестировании моего компонента, я получаю следующую ошибку

    TypeError: require(...).configureNextLayoutAnimation is not a function

      82 |
      83 |   const handleToggleFilters = () => {
    > 84 |     LayoutAnimation.configureNext(LayoutAnimation.Presets.spring);
         |                                  ^
      85 |     setPostFiltersActive(!postFiltersActive);
      86 |   };
      87 |

Я добавил jest.mock('react-native') в свой файл настроек. js, но затем он начал жаловаться на другие отсутствующие объекты через оставшуюся часть моего набор тестов ... мне нужно смоделировать всю библиотеку react-native, чтобы это работало?

Как лучше всего обойти это?

1 Ответ

1 голос
/ 24 января 2020

Посмотрев некоторые тесты из react-native на github, выглядело, как будто они просто издевались над самим файлом.

// Libraries/Components/Keyboard/__tests__/Keyboard-test.js

jest.mock('../../../LayoutAnimation/LayoutAnimation');

Так что в моем файле setup.js я просто сделал

jest.mock(
  '../node_modules/react-native/Libraries/LayoutAnimation/LayoutAnimation.js',
);

И мои тесты пройдены.

...