初始問題我有一個簡單的遞增/遞減組件。它顯示了一個數字計數和 2 個遞增或遞減 1 的按鈕。還有一個輸入;如果在輸入中提供了數值,則按鈕使用輸入值而不是 1 來增加/減少。我有這個測試:it(`should increment by input value, if value > 0`, () => { const { input } = setup(); // Change input value to 4 fireEvent.change(input, {target: { value: 4}}); // Find and click +n button const btn = screen.getByText(`+n`); fireEvent.click(btn); // Find and check updated count const updatedCount = parseInt(screen.getByTestId(`count`).textContent, 10) expect(updatedCount).toBe(4);})問題:此處更新后的計數返回 1(默認為useState),我預計為 4。expect(parseInt(input.value, 10)).toBe(4)通過并onChange連接輸入。問題:為什么沒有使用更新的輸入值?附加信息:雖然我不確定,但我認為它可能沒有更新useStateon change,所以我還添加了一個鍵盤事件來在我更改它的值后點擊輸入上的 enter 鍵。我希望進一步模擬用戶并更新狀態,但我沒有運氣。非常感謝任何幫助!對于任何不合適的地方,我深表歉意,最近幾天我一直在看 Jest/RTL。
Jest/react-testing-library:點擊一個按鈕沒有更新測試中的值
侃侃爾雅
2023-05-18 10:47:37