Я работаю над тестированием в Jest и ищу способ протестировать конкретную функцию, у которой есть изменение, поэтому мне нужно, чтобы тест имитировал изменение.
это мой тест
it('Expect HandleFilterChange', () => {
const handleFilterChange = jest.fn();
handleFilterChange();
const handleChangeEvent = wrapper.find("noJava8")
console.info("this is what Handle Change Equals ",handleChangeEvent)
expect(handleChangeEvent).toEqual("")
handleChangeEvent.simulate('lowCodeCoverage', { handleFilterChange: 27 });
expect(store.getActions()[0]).to.deep.equal(noJava8);
expect(handleFilterChange).toHaveBeenCalled()
})
и это мой код
handleChangeEvent = name => event => { console.info(name)
var options = {lowCodeCoverage: this.props.lowCodeCoverage, noBasePOM: this.props.noBasePOM, noJava8: this.props.noJava8};
options[name] = event.target.checked;
this.props.handleFilterChange(options);
console.info(this.handleChangeEvent)
};
<FormControlLabel
control = {<Checkbox checked = {this.props.lowCodeCoverage}
onChange = {this.handleChangeEvent('lowCodeCoverage')}
value = "lowCodeCoverage" color = "primary" />}
label = {I18n.t('filters.low-code-coverage')}
/>
<FormControlLabel
<WithStyles(FormControl) component = "filter-options">
<WithStyles(FormGroup)>
<WithStyles(FormControlLabel) id = "lowCodeCoverage" control = {{...}} label = "low-code-coverage" />
<WithStyles(FormControlLabel) id = "noBasePom" control = {{...}} label = "no-base-pom" />
<WithStyles(FormControlLabel) id = "noJava8" control = {{...}} label = "no-java-8" />
</WithStyles(FormGroup)>
wrapper = shallow (<FilterOptions />) Он определен выше в файле
также добавьте код вашего метода рендеринга
добавил это к исходному вопросу



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Вы можете смоделировать событие change следующим образом:
Если noJava8 - это идентификатор FormControlLabel, это мое предположение.
const handleChangeEvent = jest.fn();
wrapper = shallow(<FilterOptions.WrappedComponent handleChangeEvent= {handleChangeEvent} />).dive();
wrapper.find('#noJava8').simulate('change');
expect(handleChangeEvent).toHaveBeenCalled();
Этот тест будет пройден.
Я получил эту ошибку. Метод «моделирования» предназначен для запуска только на одном узле. 0 нашел взамен.
вы добавили id в formLabel?
добавил это, и теперь я получаю эту «Ожидаемую фиктивную функцию, которая была вызвана, но она не была вызвана».
Отредактировал свой ответ. Был change вместо click
по-прежнему возникает та же проблема.
Пожалуйста, сделайте это: console.info (wrapper.debug ())
добавил это к моему исходному вопросу
@JakobLong Я отредактировал свой ответ, пожалуйста, используйте WrappedComponent и ныряйте для HOC
Как вы здесь делаете мелкий рендеринг?