我正在使用带有 Jest 的 React Test Renderer 来测试我的 React Native 应用程序。
这是我正在做的一个简单的代码示例:
it('renders one text', () => {
const text = 'bar';
const instance = renderer.create(
<View>
<Text testID="foo">{text}</Text>
</View>
).root;
expect(instance.findAllByProps({ testID: 'foo' }).length).toEqual(1);
});
it('renders two texts', () => {
const text = 'bar';
const instance = renderer.create(
<View>
<Text testID="foo">{text}</Text>
<Text testID="foo">{text}</Text>
</View>
).root;
expect(instance.findAllByProps({ testID: 'foo' }).length).toEqual(2);
});
第一个测试失败说:
Expected: 1
Received: 2
第二个测试也失败了:
Expected: 2
Received: 4
为什么使用findAllByProps
find 双倍实例反应测试渲染器?
PS:作为健全性检查,我还尝试findByProps
了哪些有效:
it('renders one text', () => {
const text = 'bar';
const instance = renderer.create(
<View>
<Text testID="foo">{text}</Text>
</View>
).root;
expect(instance.findByProps({ testID: 'foo' }).props.children).toEqual(text);
});