Тест Jest-Native проходит успешно, но не должен
В моем приложении React Native я пытаюсь выполнить модульное тестирование, если кнопка содержит заголовок "test". Для этого я используюreact-native-testing-library
а также Jest
/Jest-native
.
Проблема в том, что даже если я даю кнопке "неправильный" заголовок, скажем "я неправильный заголовок", модульный тест выполняется успешно. Я попытался использовать разные сопоставители, чтобы переписать макеты компонентов, исключив возможность того, что NativeBase является проблемой, и искал повсюду в Google.
Вот компонент, который следует протестировать, LandingPage.js
:
import React from 'react';
import {View, Text, Button, StyleSheet} from 'react-native';
import { withNavigation } from 'react-navigation';
class LandingPage extends React.Component {
render() {
return (
<View>
<Button testID="button" title='i am a title' />
</View>
);
}
}
export default withNavigation(LandingPage);
И это испытание, LandingPage-test.js
:
import React from 'react';
import {render} from 'react-native-testing-library';
import LandingPage from '../LandingPage';
import '@testing-library/jest-native/extend-expect';
jest.mock('react-navigation', () => ({
withNavigation: Component => props => (
<Component navigation={{navigate: jest.fn()}} {...props} />
),
}));
afterAll(() => {
jest.restoreAllMocks();
});
describe('LandingPage', () => {
it('contains a button with title test', () => {
const {queryByTestId} = render(<LandingPage />);
expect(queryByTestId('button')).toHaveProp('title', 'test');
});
});
Несмотря на то, что в компоненте заголовок кнопки установлен на "я заголовок", но ожидается другой заголовок, тест все равно выполняется успешно:
Однако кажется, что второй аргумент toHaveProp
не имеет значения. Если я изменю первый аргумент на ложь, напримерexpect(queryByTestId('button')).toHaveProp('tiiiiiiiiiiitle', 'test');
, модульный тест не проходит, и это правильно, поскольку button
не имеет собственности tiiiiiiiiiiitle
. Как сказано в документацииJest Native
, можно "проверить, имеет ли атрибут определенное ожидаемое значение". Смотрите документацию здесь.
Для меня это загадка.