Как я могу ввести контекст при тестировании компонентов? - PullRequest
0 голосов
/ 20 декабря 2018

Проблема, с которой я сталкиваюсь, заключается в том, что когда я внедряю контекст, мой тест видит контекст по умолчанию, который я установил в MahContext.Я пробовал использовать Shallow, я пробовал без оболочки context вокруг значений, и это не имеет значения.Мелкий дает мне пустой предмет, что странно.Я также попытался добавить childContextTypes: { mahContext: PropTypes.object } ко второму параметру в mount и shallow, но безрезультатно.

Мой контекст (по умолчанию):

const MahContext= React.createContext({ id: 0, name: '' })

Мой поставщик:

const MahProvider = props => (
    <MahContext.Provider value={props.value}>
        {props.children}
    </MahContext.Provider>
)

Дерево компонентов (в app.js):

<MahProvider value=({9, "Johnny Utah"})>
    <ParentOfMahComponent />
</MahProvider>

Мой компонент для проверки:

class MahComponent extends Component {
    ...
    async componentDidMount() {
        // for my test, results in 0 and '', the defaults
        // which causes my test to fail as there is a validity check 
        // following
        const { id, name } = this.context
    }
}

MahComponent.contextType = MahContext

Мой тест:

const component = mount(
    <MahComponent />, 
    {
        context: {
            id: 7,
            name: "John Wick"
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...