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

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

使用材質 UI 和反應測試庫時從對話框測試 onClose 回調?

使用材質 UI 和反應測試庫時從對話框測試 onClose 回調?

瀟湘沐 2021-12-02 14:59:24
我目前正在嘗試在我的 React 應用程序上獲得完整的測試覆蓋率,但是在嘗試測試來自 Material UI 組件的回調事件參數時,我遇到了笑話。我認為通過測試轉義事件我可以覆蓋onClose參數,但它仍然顯示為未經測試。該測試的示例:function renderWithRedux(  ui: any,  startingState: any = initialState,  store?: any) {  if (!store) {    store = createStore(reducer, startingState);  }  return {    ...render(<Provider store={store}>{ui}</Provider>),    // adding `store` to the returned utilities to allow us    // to reference it in our tests (just try to avoid using    // this to test implementation details).    store,  };}test("Should close the dialog on exit event eg esc key pressed", () => {  const { container, queryByTestId } = renderWithRedux(    <PermissionGroupList />,    permissionGroupCat  );  fireEvent(    queryByTestId("add-group"),    new MouseEvent("click", {      bubbles: true,      cancelable: true,    })  );  let dialogBox = queryByTestId("add-group-dialog");  // Check that the dialog is open.  expect(dialogBox).toBeTruthy();  // Check that the dialog it closes.  fireEvent.keyDown(document.body, {    key: "Escape",    keyCode: 27,    which: 27  })  setTimeout(() => {    // Try to re get the element.    dialogBox = queryByTestId("add-group-dialog");    expect(dialogBox).toBeNull();  }, 500);})將綁定closeDialog方法傳遞給子組件時出現相同或類似的問題。它似乎未經測試。我將如何測試這個/如果它觸發方法(在子組件上),它是否會被子組件的測試覆蓋,我還沒有創建子組件測試。正如您在上面的屏幕截圖中所看到的,這兩行都未經測試,所以我如何用我的測試來覆蓋這些。我正在使用 react-testing-library 和 jest --coverage 與 redux 和 react-redux。
查看完整描述

2 回答

?
海綿寶寶撒

TA貢獻1809條經驗 獲得超8個贊

我建議不要創建箭頭函數作為道具。以下是對缺點和替代方法的更詳細說明:https : //medium.com/@oleg008/arrow-functions-in-react-f782d11460b4

這也將使您的測試涵蓋這些道具。盡管您可能還需要測試handleGroupDialog是否調用了類方法。你可以用間諜來做到這一點:https : //remarkablemark.org/blog/2018/06/13/spyon-react-class-method/

大衛也說得對!您將需要使用 done 方法或將您的測試轉換為異步并等待。


查看完整回答
反對 回復 2021-12-02
?
藍山帝景

TA貢獻1843條經驗 獲得超7個贊

您在同步測試中運行的異步代碼。如果您setTimeout在測試中使用,那么您需要傳入一個done()函數,然后在最后一個異步事件完成時調用它。

https://jestjs.io/docs/en/asynchronous


查看完整回答
反對 回復 2021-12-02
  • 2 回答
  • 0 關注
  • 170 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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