Я пытаюсь использовать мелкую оболочку Фермента, чтобы получить экземпляр моего компонента и вызвать функцию класса над ним. Он показывает мне эту ошибку: TypeError:. Tree.instance (...) onCampaignSelected не является функциейТестирование React Component with Jest/Enzyme
class ToolbarPage extends Component {
constructor(){
super();
this.onCampaignSelected = this.onCampaignSelected.bind(this);
this.state = {
item: null
}
}
onCampaignSelected (item) {
this.setState({item})
}
render() {
return (
<MyComponent onItemSelected={this.onCampaignSelected} />
)
}
}
function mapStateToProps(state){
buttons: state.toolbar.buttons
}
export default connect(mapStateToProps)(ToolbarPage);
Мой тест выглядит так
import { shallow, mount } from 'enzyme';
import ToolbarPage from './ToolbarPage';
import configureStore from 'configureStore';
const store = configureStore();
const props = {
store,
isLoggedIn: false,
messageCounter: 0
}
describe('<ToolbarPage />',() => {
it('allows to select campaign',() => {
const tree = shallow(<ToolbarPage {...props}/>);
tree.instance().onCampaignSelected();
})
})
я вычислял что это завернутый компонент, поэтому я не буду использовать эту функцию для завернутого компонента. Как получить доступ к этой функции?
Код, кажется, в порядке. Что возвращает 'tree.debug()' ?. Кроме того, вы не ошибаетесь, что 'реквизит'' undefined'? Разве вы не пропустили что-то в приведенном примере кода? –