Я новичок в тестировании компонентов, подключенных к редуктору в React, и пытаюсь понять, как их тестировать.
В настоящее время я использую реагирующую библиотеку и испытываю проблемы с настройкой функции renderWithRedux для правильной настройки приставки.
Вот пример компонента:
import React, { Component } from 'react'
import { connect } from 'react-redux'
class Sample extends Component {
constructor(props) {
super(props);
this.state = {
...
}
}
componentDidMount() {
//do stuff
console.log(this.props)
}
render() {
const { user } = this.props
return(
<div className="sample">
{user.name}
</div>
)
}
}
const mapStateToProps = state => ({
user: state.user
})
export default connect(mapStateToProps, {})(Sample);
Вот пример теста:
import React from 'react';
import { createStore } from 'redux'
import { Provider } from 'react-redux'
import { render, cleanup } from 'react-testing-library';
import Sample from '../components/sample/'
const user = {
id: 1,
name: "John Smith"
}}
function reducer(state = user, action) {
//dont need any actions at the moment
switch (action.type) {
default:
return state
}
}
function renderWithRedux(
ui,
{ initialState, store = createStore(reducer, initialState) } = {}
) {
return {
...render(<Provider store={store}>{ui}</Provider>),
store,
}
}
afterEach(cleanup)
test('<Sample> example text', () => {
const { getByTestId, getByLabelText } = renderWithRedux(<Sample />)
expect(getByText(user.name))
})
Пользовательское значение пропуска всегда будет неопределенным.Я переписал это несколькими способами, но не могу заставить его работать.Если в тесте я передаю пользовательские данные непосредственно как компонент Sample, он все равно становится неопределенным.
Я учусь на уроках и примерах через официальные документы, как этот: https://github.com/kentcdodds/react-testing-library/blob/master/examples/tests/react-redux.js
Любые указатели, советы или решения будут с благодарностью!