在我的新 React Native 应用程序中,我想添加一些 Jest 测试。
一个组件呈现背景图像,该图像直接位于assets
文件夹中的项目中。
现在我偶然发现了如何测试该图像是否实际上是从该路径获取的,因此存在于组件中并正确渲染。
我尝试将toHaveStyle
from@testing-library/jest-native
与容器一起使用,它返回的错误toHaveStyle
不是函数。然后我尝试了同样的queryByTestId
错误,同样的错误。当我这样做时 expect(getByTestId('background').toBeInTheDocument);
,我觉得这没用,因为它只检查是否存在具有此 testId 的元素,而不是图像源。
请问,我该如何测试这个?毕竟测试图像源真的有意义吗?
这是我的代码:
1.) 应测试的组件 ( Background
):
const Background: React.FC<Props> = () => {
const image = require('../../../../assets/images/image.jpg');
return (
<View>
<ImageBackground testID="background" source={image} style={styles.image}></ImageBackground>
</View>
);
};
2.) 测试:
import React from 'react';
import {render, container} from 'react-native-testing-library';
import {toHaveStyle} from '@testing-library/jest-native';
import '@testing-library/jest-native/extend-expect';
import Background from '../Background';
describe('Background', () => {
test('renders Background image', () => {
const {getByTestId} = render(<Background></Background>);
expect(getByTestId('background').toBeInTheDocument);
/* const container = render(<Background background={background}></Background>);
expect(container).toHaveStyle(
`background-image: url('../../../../assets/images/image.jpg')`,
); */
/* expect(getByTestId('background')).toHaveStyle(
`background-image: url('../../../../assets/images/image.jpg')`,
); */
});
});