Jest тестирование с использованием mount и контекстного API React - PullRequest
0 голосов
/ 23 сентября 2019

Я пытаюсь протестировать мою реализацию API контекста с помощью jest, используя mount, но получаю ошибку

TypeError: Невозможно прочитать свойство 'state' из неопределенного

Я пробовал различные методы для передачи данных контекста компоненту во время тестирования, но пока безуспешно.

ApplicationContext.js

import React from 'react'

const AppContext = React.createContext()
export default AppContext

MyComponent.js file

render () {
  return (
    <AppContext.Consumer>
      {context => (
        { context.state.user === SUPER_USER
          ? <Dashboard></Dashboard>
          : <Info></Info>
      )}
    </AppContext.Consumer>
  )
}

Методы, которые я попробовал

//version 1
const wrapper = mount(<AppContext.Provider context={{ state: { user: SUPER_USER } }}><ActivityDisplay {...props} /></AppContext.Provider>)
  instance = wrapper.instance()
})

//version 2
wrapper = mount(<HomePage {...props} />, {
  context: { state: { user: SUPER_USER } },
})

//version 3
wrapper = mount(<HomePage {...props} />, {
  AppContext: {
    Consumer: { user: SUPER_USER }
  }
})

afterAll(() => {
  wrapper.unmount()
})

it('should display dashboard when user is SUPER_USER', () => {
  //do my assertions here
})

Когда я отлаживаю приложение с помощью вышеуказанного тестового кода, контекст всегда не определен

1 Ответ

0 голосов
/ 23 сентября 2019

Поставщик принимает значение prop, а не context context.https://reactjs.org/docs/context.html#contextprovider

AppContext.Provider value = {{состояние: {пользователь: SUPER_USER}}}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...