Почему мои реквизиты не передаются в мой компонент при рендеринге монтирования? - PullRequest
1 голос
/ 25 апреля 2019

Я пишу юнит-тесты с использованием Enzyme и Jest для моего интерфейса React App.Когда я пытаюсь сделать экран входа в систему, он не видит некоторые реквизиты, которые я передаю, когда пытаюсь выполнить mount ().Неглубокий рендеринг работает нормально, и я могу проверить свои методы componentDidMount и componentWillReceiveProps.

Я пробовал несколько способов рендеринга.Используя mount () с провайдером, жесткий код пропускает реквизиты. Кажется, ничего не работает.

Ниже приведен рабочий тест и неработающий тест.Первый работает нормально, но тест монтирования не пройден:

Я передаю эти реквизиты через:

let props = {
    actions: mockProps.actions,
    auth: {
        isAuthenticated: false,
        isFetching: false
    },
    history: mockProps.history,
    location: {
        pathname: "/login",
        search: "",
        hash: "",
        key: "0m32x8"
    },
    match: mockProps.match
}

mockProps - это файл json с примерами реквизитов из React Dev Tool в chrome.

// Working Shallow Rendered Test
it('componentWillReceiveProps', () => {
    const componentWillReceivePropsSpy = jest.spyOn(Login.prototype, 'componentWillReceiveProps')
    shallowWrapper.setProps({ location: { search: "testing" } })
    expect(componentWillReceivePropsSpy).toHaveBeenCalled()
})

// Broken Mount Rendered Test
it('Mount Test', () => {
    mount(<Provider store={store}><Login {...props}/></Provider>)
})

Ошибка возникает, когда компонент пытается установить начальное состояние здесь :

state = {
    shouldRedirect: false,
    errorShown: false,
    fields: {
        username: '',
        password: ''
    },
    token: q.parse(this.props.location.search).token,
    fieldErrors: {}
};

Не удается найти this.props.location.search.

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