Я использую Enzyme, и мы можем использовать пример компонента, приведенный в документации, в качестве основы для моего вопроса.
Предположим, что этот компонент <Foo/>
использует компонент <Link>
из ReactRouter, и поэтому нам нужно обернуть его в <MemoryRouter>
для тестирования.
В этом и заключается проблема.
it('puts the lotion in the basket', () => {
const wrapper = mount(
<MemoryRouter>
<Foo />
</MemoryRouter>
)
wrapper.state('name') // this returns null! We are accessing the MemoryRouter state, which isn't what we want!
wrapper.find(Foo).state('name') // this breaks! state() can only be called on the root!
})
Таким образом, не совсем уверен, как получить доступ к состоянию локального компонента при использовании <MemoryRouter>
.
Возможно я выполняю невежественный тест? Является ли попытка получить/установить состояние компонента плохой практикой при тестировании? Я не могу себе это представить, так как Enzyme имеет методы для получения/установки состояния компонента.
Просто не уверен, как можно получить доступ к внутренним компонентам компонента, <MemoryRouter>
в <MemoryRouter>
.
Любая помощь будет принята с благодарностью!