У меня есть приложение React Native, в котором я пытаюсь написать несколько интеграционных тестов с использованием Jest & Enzyme. Моя ситуация выглядит следующим образом, у меня есть компонент, который выбирает параметр навигации, передаваемый ему с предыдущего экрана, используя getParam
- который работает нормально, я просто изо всех сил пытаюсь успешно получить значение с помощью фиктивных данных. Мой код выглядит так:
В моем контейнере у меня есть это в методе рендеринга:
const tickets = navigation.getParam('tickets', null);
Тогда в моем тесте у меня будет следующее:
const createTestProps = (testProps: Object, navProps: any = {}) =>
({
navigation: {
navigate: jest.fn(),
getParam: jest.fn(),
...navProps,
},
...testProps,
} as any);
let props = createTestProps(
{},
{
state: {
// Mock navigation params
params: {
tickets: [
{
cellNumber: '123456789',
ticketId: 'xxx',
},
{
cellNumber: '123456789',
ticketId: 'xxx',
},
],
},
},
}
);
const container = mount(
<MockedProvider mocks={mocks} addTypename={false}>
<ThemeProvider theme={theme}>
<TicketSummaryScreen {...props} />
</ThemeProvider>
</MockedProvider>
);
Как вы можете видеть, я попытался смоделировать фактическое состояние навигации, которое я проверил с тем, что на самом деле используется в реальном компоненте, и это в основном то же самое. Значение для tickets
по-прежнему не определено при каждом запуске теста. Я предполагаю, что это связано с тем, как я высмеял функцию getParam
.
У кого-нибудь есть идеи? Буду очень признателен!