Я использую React Test Renderer с Jest для тестирования моего приложения 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
, находит двойные экземпляры?
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);
});