Я пишу юнит-тесты с использованием 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
.