Jest.js 如何在函数组件react native中调用const函数?

a0zr77ik  于 12个月前  发布在  Jest
关注(0)|答案(1)|浏览(93)
const goToLoginPage = () => {       
  navigation.navigate(AppConstants.LOGIN_SCREEN)
});

<TouchableOpacity onPress={goToLogin}>
  <Text>OK</Text>
</TouchableOpacity>

如何使用Jest调用此方法?

nhaq1z21

nhaq1z211#

您需要模拟导航,以便能够检查是否调用了它

// Mock the useNavigation hook to return a navigation object
const mockNavigation = jest.fn();
jest.mock('@react-navigation/native', () => {
  const actualNavigation = jest.requireActual('@react-navigation/native');
  return {
    ...actualNavigation,
    useNavigation: () => ({
      navigate: mockNavigation,
    }),
  };
});

it('test if callback is being called', () => {
  // GIVEN
  render(
    <NavigationContainer>
      <theComponent>
    </NavigationContainer>
  )
  const button  = screen.getByText('OK')

  //WHEN
  fireEvent.press(button)

  //THEN
  expect(mockNavigation).toHaveBeenCalledWith(AppConstants.LOGIN_SCREEN)
})

相关问题