Я пытаюсь проверить функциональность элемента select в компоненте React.
Примечание: это не дубликат этого вопроса , потому что я не использую фермент, а скорее пытаюсь сделать что-то, просто используя act()
из React's Test Utilities и выполнение тестов с Jest .
Учитывая компонент с элементом select, подобным этому:
class TestSelect extends React.Component {
constructor(props) {
super(props);
this.state = {
choice: "apples",
};
this.handleChange = this.handleChange.bind(this);
}
handleChange(event) {
this.setState({choice: event.target.value});
}
render() {
return (
<div>
<select value={this.state.choice} onChange={this.handleChange}>
<option value="apples">apples</option>
<option value="oranges">oranges</option>
</select>
<h4>You like {this.state.choice}</h4>
</div>
);
}
}
Я хотел бы иметь возможность протестируйте это следующим образом:
import React from "react";
import { render, unmountComponentAtNode } from "react-dom";
import { act } from "react-dom/test-utils";
test("Should change preference", () => {
act(() => {
render(<TestSelect/>, container);
});
let message = container.querySelector("h4");
expect(message.innerHTML).toContain("apples");
const selectElement = container.querySelector("select");
act(() => {
selectElement.dispatchEvent(new Event("change"), {
target: { value: "oranges"},
bubbles: true,
});
});
message = container.querySelector("h4");
// Test fails here: Value does not change
expect(message.innerHTML).toContain("oranges");
});
После долгих хлопот и попыток различных опций я не могу смоделировать событие, которое заканчивается изменением выбранного значения в элементе select.