Enzyme with React -17.0.1 - Метод "text" предназначен для запуска на 1 узле. 0 найдено вместо
Я использую response-17.0.1 с энзимом 3.3.0 и @wojtekmaj/ энзим-адаптер-react-17, поэтому я получаю много ошибок в тестах после перехода на react 17. У меня есть такой тест:
describe('JournalNotesListView', () => {
let wrapper;
beforeEach(() => {
wrapper = shallow(<JournalNotesListView {...props} />);
});
describe('render', () => {
it('should match snapshot', () => {
expect(wrapper).toMatchSnapshot();
});
it('should show `Journal entries are recorded when you add notes or images related to plants in your garden.` when gardenPlantData is empty array or hash', () => {
const expectedString =
'Journal entries are recorded when you add notes or images related to plants in your garden.';
let journalData = {
data: [],
meta: {
otherNotes: []
}
};
wrapper.setProps({ journalData });
expect(wrapper.find('Text').children().text()).toEqual(expectedString);
journalData = {
data: {},
meta: {
otherNotes: {}
}
};
wrapper.setProps({ journalData });
expect(wrapper.find('Text').children().text()).toEqual(expectedString);
});
Я получаю сообщение об ошибке:
Method “text” is meant to be run on 1 node. 0 found instead.
39 | wrapper.setProps({ journalData });
40 | console.log('wrapper', wrapper.find('Text').children());
> 41 | expect(wrapper.find('Text').children().text()).toEqual(expectedString);
Это компонент, для которого тест написан следующим образом:
const mappedJournalData = () => {
if (isEmptyArrayOrHash(journalData.data) && isEmptyArrayOrHash(journalData.meta.otherNotes)) {
return (
<View style={styles.notFoundContainer}>
<Text style={styles.notFound}>
Journal entries are recorded when you add notes or images related to plants in your garden.
</Text>
</View>
);
}
// check if garden plant present
if (!isEmptyArrayOrHash(gardenPlantData.data)) {
return gardenPlantData.data.map(plant => (
// show data, grouping by particular plant
<JournalPlantsGroup plant={plant} journalData={journalData} key={plant.id} />
));
}
};
export default mappedJournalData;
1 ответ
Фермент
shallow
рендеринг делает доступными только узлы одноуровневой глубины. Использовать
.dive()
перед твоим
.find()
или же
mount
компонент вместо
shallow
рендеринг.