我正在使用Jest测试我的React Native应用程序,但遇到了很多麻烦。其中一个错误是:Unable to find an element with testID: loginButton
这是我的JSX代码:
<Button
testID="loginButton"
onPress={() => navigation.navigate('Home')}>
Join for free
</Button>
和我的测试代码:
import React from 'react';
import Login from '../screens/Login';
import {fireEvent, render} from '@testing-library/react-native';
describe('Login screen', () => {
it('should go to dashboard', () => {
const navigation = {navigate: () => {}};
jest.spyOn(navigation, 'navigate');
const page = render(<Login navigation={navigation} />);
const loginButton = page.getByTestId('loginButton');
fireEvent.press(loginButton);
expect(navigation.navigate).toHaveBeenCalledWith('Home');
});
});
编辑:如果我执行const loginButton = page.queryAllByTestId('loginButton');
,则测试通过。
我做错了什么?谢谢!
1条答案
按热度按时间kmbjn2e31#
我忘了提到我使用的是NativeBase,我的应用程序被 Package 在一个
<NativeBaseProvider>
中。要解决上述问题,您可以在测试中简单地将initialWindowMetrics传递给NativeBaseProvider。