Estou tentando alguns testes de unidade, criei uma sandbox com um exemplo falso https://codesandbox.io/s/wizardly-hooks-32w6l (na realidade, tenho um formulário)
class App extends React.Component {
constructor(props) {
super(props);
this.state = { number: 0 };
}
handleSubmit = (number1, number2) => {
this.setState({ number: this.handleMultiply(number1, number2) })
}
handleMultiply = (number1, number2) => {
return number1 * number2
}
render() {
const { number } = this.state;
return (
<div className="App">
<form onSubmit={e => this.handleSubmit(3, 7)}>
<input type="submit" name="Submit" value="Multiply" />
</form>
<Table number={number} />
</div>
);
}
}
export default App;
Então, minha ideia inicial foi tentar testar a função multiplicar. E fez isso, o que obviamente não funciona
import App from "../src/App";
test("Multiply", function() {
const expected = 21;
const result = App.handleMultiply(3, 7);
expect(result).toBe(expected);
});
eu recebo
_App.default.handleMultiply não é uma função
Minha abordagem está certa? Se sim, como testo as funções? Senão, devo testar do ponto de vista do usuário em vez de funções internas (é isso que eu leio)? Devo testar a saída na tela (não acho que isso seja razoável)?