Я предполагаю, что основной вопрос о переходе состояния в компонент во время тестирования.
Ты можешь сделать это? Да, но по-другому. Точно так же, как вы делаете в plain Реакция, вы не можете создать компонент (shallow(<...>)
делает это) переходное состояние. Здесь играют только реквизиты. Но есть метод .setState()
, так что вы можете создать элемент и состояние прохождения следующей строки в:
const wrapper = shallow(<ScreensLogin {...props}/>)
wrapper.setState(state);
Тебе это нужно? Я верю, что нет. Я уверен, что вам нужно общаться с тестируемым компонентом точно так же, как вы работаете с ними в браузере:
- прохождение разных реквизитов
- явный вызов обратных вызовов props неявным образом (
wrapper.simulate('click', {/*event mock here*/})
делает то же самое, что и wrapper.props().onClick({/*event mocked*/})
)
- проверка
render()
результат
Почему так?
1. установка state
напрямую ничего не говорит, если возможно получить такое состояние в дикой природе (скажем, вы можете пропустить, что свойство какого-то состояния используется в render
, но никогда не изменяется ни одним из методов)
2. было бы сложнее поддерживать актуальность тестов: наряду с любыми изменениями во внешнем интерфейсе компонентов (props
) необходимо согласовать его с внутренними компонентами (state
)
3. и, наконец, было бы легко столкнуться с противоречивым состоянием, которое вы никогда не получите, взаимодействуя через props