ฉันลองทดสอบหน่วยฉันสร้าง sandbox พร้อมตัวอย่างปลอมhttps://codesandbox.io/s/wizardly-hooks-32w6l (ในความเป็นจริงฉันมีแบบฟอร์ม)
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;
ดังนั้นความคิดเริ่มแรกของฉันคือพยายามทดสอบฟังก์ชันทวีคูณ และทำสิ่งนี้ซึ่งเห็นได้ชัดว่าใช้งานไม่ได้
import App from "../src/App";
test("Multiply", function() {
const expected = 21;
const result = App.handleMultiply(3, 7);
expect(result).toBe(expected);
});
ฉันเข้าใจ
_App.default.handleMultiply ไม่ใช่ฟังก์ชัน
แนวทางของฉันถูกไหม? ถ้าใช่แล้วฉันจะทดสอบฟังก์ชั่นได้อย่างไร? มิฉะนั้นฉันควรทดสอบจากมุมมองของผู้ใช้แทนฟังก์ชั่นภายใน (นี่คือสิ่งที่ฉันอ่าน)? ฉันควรทดสอบผลลัพธ์บนหน้าจอ (ฉันไม่คิดว่ามันสมเหตุสมผลหรือไม่)