Как выполнить модульный тест статических навигационных опций с Jest и Enzyme при использовании React Navigation и TypeScript? - PullRequest
0 голосов
/ 08 октября 2018

Я создаю приложение React Native с помощью TypeScript.Я делаю свои тесты компонентов, используя Jest и Enzyme.Я также использую навигацию React.

На одном из моих экранов есть следующее navigationOptions:

static navigationOptions = ({ navigation }: NavigationScreenProps) => ({
headerLeft: Platform.select({
  android: (
    <Icon
      name="md-menu"
      type="ionicon"
      containerStyle={styles.icon}
      onPress={navigation.toggleDrawer}
    />
  ),
  ios: null
}),
headerTitle: strings.homeTitle

});

Я хочу написать модульный тест, гарантирующийчто компонент <Icon /> визуализируется.Похоже на это:

const props = createTestProps({});
const wrapper = shallow<HomeScreen>(<HomeScreen {...props} />);

it("should render a <View />", () => {
  expect(wrapper.find(View)).toHaveLength(1);
});

Моя проблема в том, что я не могу найти селектор, чтобы выбрать его.Как я могу выбрать static navigationOptions?

Я также попытался обойти оболочку следующим образом:

expect(wrapper.instance().navigationOptions)

Но экземпляр оболочки не имеет навигационных параметров.

1 Ответ

0 голосов
/ 08 октября 2018

Поскольку это статическая функция, вы можете вызывать ее, не создавая новый экземпляр.

test('navigation options', () => {
  const naviProp = { navigation: { navigate: () => {} } };
  const navigationOptions = HomeScreen.navigationOptions(naviProp);

  expect(navigationOptions).toMatchSnapshot();
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...