У меня очень простой компонент с отслеживанием состояния, который возвращает кнопку
import React, { Component } from "react";
class CounterButton extends Component {
constructor(props) {
super(props);
this.state = { count: 1 };
}
shouldComponentUpdate(nextProps, nextState) {
if (this.state.count !== nextState.count) {
return true;
}
return false;
}
render() {
return (
<button
id="btn"
color={this.props.color}
onClick={() =>
this.setState((state) => ({ count: state.count + 1 }))
}
>
Count: {this.state.count}
</button>
);
}
}
export default CounterButton;
Затем я использую Enzyme для проверки события щелчка
describe("CounterButton component", () => {
it("Shallow rendering", () => {
const mockColor = "red";
const wrapper = shallow(
<CounterButton color={mockColor}></CounterButton>
);
expect(wrapper.state("count")).toEqual(1);
wrapper.find('[id="btn"]').simulate("click");
// wrapper
// .find('[id="btn"]')
// .invoke("onClick")()
// .then(() => {
// expect(wrapper.state().count).toEqual(2);
// });
});
});
либо с помощью моделирования, либо с помощью вызова, и он возвращает это метод «simulate / invoke» предназначен для запуска на 1 узле. Вместо этого был найден 0.
Я не могу заметить ошибку, контейнер возвращает только кнопку, поэтому поверхностная функция должна возвращать узел, с которым я хочу работать. Раньше я просто использовал кнопку в качестве аргумента для поиска, но, поскольку это не сработало, я добавил идентификатор, но без какого-либо результата.
Я работаю над win10 с git bash .
Кто-нибудь может помочь?