Фермент shallow
специально предназначен для того, чтобы НЕ иметь возможность проверять дочерние элементы переданного компонента.Поскольку StaticRouter
является родительским компонентом, ComponentForm
никогда не будет правильно отображаться, и поэтому Link
никогда не будет в представлении.Таким образом, используя shallow
, вы можете проверить, что StaticRouter
правильно отображает ComponentForm
, но вы не можете заглянуть внутрь ComponentForm
.
У вас есть два варианта:
Сначала вы можетепросто передайте ComponentForm
методу shallow
.Вы упомянули в комментариях, что это привело к поломке.Это вероятно, потому что ComponentForm
ожидает реквизит от StaticRouter
.Вы можете передать их вручную:
shallow(<ComponentForm routerProp1={'foo'} routerProp2={'bar'} />);
Другой вариант - глубокий рендеринг с использованием Enzyme render
.Просто замените shallow
на render
, и это должно работать.Обратите внимание, что это не рекомендуется по нескольким причинам.Во-первых, как отмечалось в shallow
, не выполняя рендеринг shallow
, вы, возможно, позволяете себе тестировать вещи, о которых компонент, который вы передаёте, не знает.Например, StaticRouter
не знает о ComponentForm
Link
, поэтому тест для ComponentForm
Link
не должен зависеть от StaticRouter
.Во-вторых, render
намного медленнее, чем shallow
, поэтому, если у вас много тестов и много компонентов, вы заметите значительное замедление.