Поскольку вы используете shallow()
, вложенные <Text />
не отображаются.Поэтому метод .text()
не знает, как будет выглядеть текст.Так что кажется, что просто возвращается имя элемента даже без всех его реквизитов.
Конечно, вы можете заменить shallow()
на mount()
, но я предлагаю вам , используя здесь .toMatchSnapshot()
.
Тогда ваши тесты будут выглядеть как
const flash = shallow(<Flash />);
it('has valid default output',()=>{
expect(flash).toMatchSnapshot();
})});
, и при этом будут проверены как <Text />
элементы, так и текст внутри.
[UPD] дополнительно о том, почему .text()
работаетсюда.Изображение у вас был тот же код с немного другим (но одинаковым!) Синтаксисом:
<Text children={'First Text'} />
Как хелпер энзима .text()
мог знать, что вернуть сюда без узла рендеринга?
[UPD2]если нет способа использовать toMatchSnapshot()
, все равно можно напрямую протестировать props
:
expect(flash.find(Text).at(0).props().children).toEqual('First Text')
Но toMatchSnapshot
намного лучше в нескольких отношениях (удобочитаемость, удобство обслуживания, гибкость и другие * возможности)