39
loading...
This website collects cookies to deliver better user experience
exercise-01-start
.src/components
e adicione o arquivo Highlight.test.js
com o seguinte conteúdo:import ReactDOM from "react-dom";
import Highlight from "./Highlight";
test("renders a value", () => {
const container = document.createElement("div");
document.body.appendChild(container);
ReactDOM.render(<Highlight />, container);
expect(document.body.textContent).toBe("3000");
});
test
recebe uma descrição do teste como primeiro parâmetro. É uma boa prática sempre começar com um verbo no presente. O segundo parâmetro é uma função anônima com o código do teste.const
chamada container
tem como valor uma div
, que é o elemento onde o componente será renderizado.render
do ReactDOM
é utilizado para renderizar o componente.expect
, ela fornece uma lista de métodos que nos permitem fazer diferentes asserções. Neste caso, verificamos se o textContent
da página é 3000
.npm test
, veja que o teste está falhando, isso já era esperado, porque ainda estamos no primeiro passo do ciclo.Highlight.js
dentro de src/components
, com o seguinte conteúdo:const Highlight = () => <div>3000</div>;
export default Highlight;
ReactDOM.render(<Highlight value="3000" />, container);
const Highlight = ({ value }) => <div>{value}</div>;
Highlight.test.js
:test("renders another value", () => {
const container = document.createElement("div");
document.body.appendChild(container);
ReactDOM.render(<Highlight value="5000" />, container);
expect(document.body.textContent).toBe("5000");
});
Expected substring: "5000"
Received string: "30005000"
body
e não o removemos após a execução do primeiro teste.body
após cada teste. A função afterEach
do Jest permite fazer isso de uma forma bem simples. Adicione o seguinte código antes dos testes:afterEach(() => {
document.body.innerHTML = "";
});
function render(component) {
const container = document.createElement("div");
document.body.appendChild(container);
ReactDOM.render(component, container);
}
test("renders a value", () => {
const value = "3000"; // Arrange
render(<Highlight value={value} />); // Act
expect(document.body.textContent).toBe(value); // Assert
});
test("renders another value", () => {
const value = "5000"; // Arrange
render(<Highlight value={value} />); // Act
expect(document.body.textContent).toBe(value); // Assert
});