Тестирование semanti c -ui pagination в подключенном компоненте React - PullRequest
0 голосов
/ 05 февраля 2020

Я пытаюсь установить prop - totalPages - для подключенного компонента React, но он не работает, как если бы компонент не перерисовывал:

const middlewares = [thunk]
const store = configureStore(middlewares)(STATE1)

wrapper = mount(                           
  <Provider store={store} >                
    <BrowserRouter>
      <SavedVariants match={{ params: {} }} />
    </BrowserRouter>
  </Provider>
) 
wrapper.setProps({ 'totalPages': 3 })
console.log(wrapper.props())
const selector = `a[type='pageItem']`
const pageItems = wrapper.find(selector)
expect(pageItems.length).toEqual(3)

Jest пишет, что pageItems.length равно 0, но должно быть 3. Параметр totalPages определяет количество страниц в компоненте semantic-ui-react Pagination, который работает правильно, когда я просто запускаю веб-приложение.

totalPages определено в mapStateToProps из SavedVariants:

export const mapStateToProps = (state, ownProps) => ({
  totalPages: getSavedVariantTotalPages(state, ownProps),
})

getSavedVariantTotalPages является просто reselect селектором.

console.log(wrapper.props()) показывает следующее:

  { store:
     { getState: [Function: getState],
       getActions: [Function: getActions],
       dispatch: [Function],
       clearActions: [Function: clearActions],
       subscribe: [Function: subscribe],
       replaceReducer: [Function: replaceReducer] },
    children:
     { '$$typeof': Symbol(react.element),
       type: { [Function: BrowserRouter] propTypes: [Object] },
       key: null,
       ref: null,
       props: { children: [Object] },
       _owner: null,
       _store: {} },
    totalPages: 3 }

Итак, из моего понимания totalPages было модифицирован (или фактически создан заново? ..) скорее для BrowserRouter? Но как установить свойства внутреннего SavedVariants?

Обновление

Каким-то образом не удается найти какой-либо элемент, который я пытаюсь найти в SavedVariants компоненте с wrapper.find(), и я получаю единственный ответ:

ReactWrapper { length: 0 }

Только сам компонент SavedVariants может быть найден, как будто на самом деле никакого рендеринга не было.

...