亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Jest/react-testing-library:點擊一個按鈕沒有更新測試中的值

Jest/react-testing-library:點擊一個按鈕沒有更新測試中的值

侃侃爾雅 2023-05-18 10:47:37
初始問題我有一個簡單的遞增/遞減組件。它顯示了一個數字計數和 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。
查看完整描述

1 回答

?
慕萊塢森

TA貢獻1810條經驗 獲得超4個贊

您的類型屬性中有錯字。改變這個

<input?type="texts"?{...}?/>

對此

<input?type="text"?{...}?/>

并且測試將再次起作用。我的猜測是,通過指定一個<input>無效的type屬性,庫不知道你是哪個角色input,所以它不能onchange正確處理事件。

我不確定為什么更新到react-scriptsand的新版本@testing-library/react會解決問題,即使您將拼寫錯誤留在那里也是如此。


查看完整回答
反對 回復 2023-05-18
  • 1 回答
  • 0 關注
  • 195 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號