簡體   English   中英

Jest / Enzyme Tests中的setTimeout

[英]setTimeout in Jest/Enzyme Tests

這是我的代碼塊:

   it("saving flow (entering into edit mode and saving) works correctly", (done) => {

const wrapper = mount(
  <Root>
    <DictionaryRooms/>
  </Root>
);

moxios.wait(() => {
  wrapper.update();


  wrapper.find('.btn-dark').at(1).simulate('click');

  setTimeout(() => {
    expect(wrapper.find('.editField span').at(0).text().trim()).toEqual(jsonDataRooms.data[0].name);
  }, 1000);

  done();
  wrapper.unmount();
})

  });

因此,您可以看到我想要模擬單擊按鈕,這在我的應用程序中導致從后端服務器下載一些新數據。 我的后端數據進入后會顯示這些數據然后顯示。 因此,在我的請求完成之后,我正在嘗試檢查新數據是否是我期望的。 顯然,點擊后需要下載時間,一段時間后會顯示。 這就是為什么我需要像setTimeout這樣的東西。 但那不行。 不知道為什么......

謝謝你的任何建議。

setTimeout()的調用將對回調進行排隊,但測試會保持同步執行,並在回調有機會執行之前調用done()wrapper.unmount()

setTimeout()回調中調用它們:

setTimeout(() => {
  expect(wrapper.find('.editField span').at(0).text().trim()).toEqual(jsonDataRooms.data[0].name);
  wrapper.unmount();
  done();
}, 1000);

測試可能存在其他問題(未提供正在測試的代碼),但進行此更改會讓您更接近。 您也可能不需要等待一秒,使用0的超時可能就足夠了(可能需要在expect之前執行排隊的回調)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM