У меня есть функциональный компонент, как показано ниже
const Input = () => {
const [value, updateValue] = useState("");
return (
<input
type="text"
id="input"
value={value}
onChange={(e) => {
updateValue(e.target.value);
}}
/>
);
};
export default Input;
и протестируйте, как показано ниже
const event = { target: { value: "Q" } };
input.simulate("change", event);
expect(input.prop("value")).toBe("Q");
проблема в том, что имитация события не обновляет состояние. Я тоже пробовал wrapper.update (), но он не работает.
вы можете запустить тест здесь
id="1"
иid="2"
, но смотрите с помощью селектора"#heart"
. 27.09.2019<Input .... id="heart"> <input .... id="heart" /> </Input>
. Вы можете увидеть это сами сconsole.log(input.debug())
. Что ты можешь сделать? Вы можете более конкретно (.find("input#heart")
) или взять только первый элемент (.find("#heart").at(0)
). Или вы можете использоватьshallow()
вместоmount()
. Или вы можете переключиться наreact-testing-library
(здесь используется другой подход) 27.09.2019