Я создаю приложение React Native с помощью TypeScript.Я делаю свои тесты компонентов, используя Jest и Enzyme.Я также использую React Navigation
Я пытаюсь написать модульный тест для нажатия моей кнопки.
Вот код компонента (только функция рендеринга):
render() {
const { navigation } = this.props;
return (
<View style={styles.container}>
<Button
raised
title={strings.painButtonTitle}
buttonStyle={styles.painButton}
titleStyle={styles.title}
onPress={() => navigation.navigate("QuestionsScreen")}
/>
</View>
);
}
Теперь приведем модульное тестирование.
describe("interaction", () => {
let wrapper: ShallowWrapper;
let props: Props;
beforeEach(() => {
props = createTestProps({});
wrapper = shallow(<HomeScreen {...props} />);
});
describe("clicking the Pain Button", () => {
it("should navigate to the 'QuestionsScreen'", () => {
wrapper.find("Button").simulate("click");
expect(props.navigation.navigate).toHaveBeenCalledTimes(1);
});
});
});
Сбой и утверждение о том, что функция navigation.navigate
, которая проверяется с помощью jest.fn (), никогда не вызывается.
Я предполагаю, что это как-то связано с предоставлением функции ошибки кнопке.Проблема в том, что я не могу этого не делать, поскольку мне нужно позвонить с аргументом "QuestionsScreen"
.Поэтому я не могу сделать что-то вроде onPress={this.navigation.navigate)
, а затем чудесным образом позвонить "QuestionsScreen"
, могу ли я?
Как я могу пройти этот тест?