Выполняю тестирование с jest
и enzyme
, и я думаю, что все делаю правильно, но каким-то образом получаю предупреждение:
Предупреждение: сбойный тип проп: проп project
помечен как требуется в ProjectPageUI
, но его значение undefined
. в ProjectPageUI
Вот как выглядит тест:
test('shallow-render without crashing', () => {
/*
project: PropTypes.object.isRequired,
*/
const props = {
match: { params: {} },
}
const store = configureStore()(STATE_WITH_2_FAMILIES)
shallow(<ProjectPageUIComponent store={store} {...props} />)
})
Внутри ProjectPageUI.jsx
Я получаю project
свойство с помощью селектора:
const mapStateToProps = (state, ownProps) => ({
project: getCurrentProject(state),
})
Где getCurrentProject
является следующим:
export const getProjectsByGuid = state => state.projectsByGuid
export const getProjectGuid = state => state.currentProjectGuid
export const getCurrentProject = createSelector(
getProjectsByGuid, getProjectGuid, (projectsByGuid, currentProjectGuid) => projectsByGuid[currentProjectGuid],
)
В STATE_WITH_2_FAMILIES
у меня определены и projectsByGuid
, и currentProjectGuid
, а projectsByGuid
имеет соответствующий ключ для currentProjectGuid
и определенный объект , Итак, теперь я задаюсь вопросом, почему происходит это предупреждение и как я должен изменить свой тест, так как я ожидаю, что у него вообще не будет проблем: селектор получает project
от state
, и это должно быть defined
.
Уточнение
Вот как выглядит ProjectPageUI
:
const ProjectPageUI = (props) => {
...
...
return ( ... )
}
ProjectPageUI.propTypes = {
project: PropTypes.object.isRequired,
...
...
}
const mapStateToProps = (state, ownProps) => ({
project: getCurrentProject(state),
...
...
})
export { ProjectPageUI as ProjectPageUIComponent }
export default connect(mapStateToProps)(ProjectPageUI)