Mam taki kod dotyczący testowania:
import React from "react";
import { render, fireEvent } from "react-testing-library";
import App from "./App";
test("App works", () => {
const { container } = render(<App />);
const inputElement = container.querySelector("#some-input");
fireEvent.keyDown(inputElement, { key: "2" });
expect(inputElement.getAttribute("value")).toBe("2");
});
oraz taki komponent:
import React, { useState } from "react";
const App = () => {
const [inputValue, setInputValue] = useState("");
return (
<input
id="some-input"
value={inputValue}
onChange={(event) => setInputValue(event.target.value)}
></input>
);
};
export default App;
Czy jest ktoś w stanie wytłumaczyć dlaczego tutaj expect(inputElement.getAttribute("value")).toBe(2);
nadal atrybut value ma wartość ""
? Dlaczego fireEvent.keyDown
nie zmieniło tej wartości w testach ?
Wiem, że można użyć np. fireEvent.change albo fireEvent.input, ale akurat tutaj interesuje mnie wykorzystanie fireEvent.keyDown, ponieważ mam podobny przypadek w kodzie, gdzie operuje na divach i nie ma możliwości ich zmiany na inputy, ponieważ pochodzą z zewnętrznej biblioteki.
Czy jest ktoś w stanie pomóc ?