react-native-reanimated useSharedValue не обновляется в тестах jest

#react-native #jestjs #react-native-reanimated #react-native-testing-library

#react-native #jestjs #react-native-reanimated #react-native-testing-library

Вопрос:

В настоящее время я пытаюсь выяснить, как протестировать анимацию reanimated 2 с использованием useSharedValue.

Для меня имеет смысл 0, так это пример, приведенный в reanimated .

https://github.com/software-mansion/react-native-reanimated/blob/master/tests/SharedValue.test.js

Если предполагается, что кнопка увеличивает свое общее значение на 1 каждый раз, когда вы ее нажимаете. Зачем вам писать тест, который показывает, что он НЕ меняется???

Я пробовал это сам, и да, значение не обновляется само по себе.

Я хочу утверждать, что значение изменилось в моем тесте:

Параллаксскролл-просмотр.tsx

 const scrollY = useSharedValue(0);

const onScroll = useAnimatedScrollHandler((event) => {
    scrollY.value = event.contentOffset.y;
});
return (
    <Animated.Image
        style={{height: scrollY}}
        testID="header-image"
        source={{ uri: headerImage }}
        resizeMode="cover"
    />
)
 

ParallaxScrollView.test.tsx

 const { getByTestId } = render(<ParallaxScrollView {...defaultProps} />);
const headerImage = getByTestId('header-image');
const content = getByTestId('parallax-content');

const eventData = {
  nativeEvent: {
    contentOffset: {
      y: 100,
    },
  },
};

fireEvent.scroll(content, eventData);

expect(headerImage).toHaveAnimatedStyle({ height: 100 }); //Received is 0
 

Ответ №1:

useAnimatedScrollHandler используется react-native-gesture-handler для обработки событий, но на данный момент обработчик жестов еще не поддерживает события в тестах, это то, над чем я работаю. Посмотрите на это — https://github.com/software-mansion/react-native-gesture-handler/pull/1762
Я думаю, что это будет доступно в ближайшее время. Если вы хотите быть в курсе последних событий, пожалуйста, откройте выпуск в реанимированном Github.