簡體   English   中英

使用React中的Enzyme模擬帶有參數的onClick方法

[英]simulating an onClick method with a parameter using Enzyme in React

我正在嘗試使用Enzyme for React在我的單元測試中模擬onClick方法。 我發現了許多模擬onClick的指南,它們需要一些事件e,例如:

handleClick(e) {
    // Does something
}

....
<MyComponent
onClick = {handleClick}
></MyComponent>

但是我希望能夠模擬我的onClick,它不會將事件作為參數,而是采用其他方式,即:

onClick = {() => handleClick(myParam)}

我嘗試過使用.simulate('click', [myParam]); 但它沒有像我預期的那樣傳遞參數。

我將如何模擬將特定參數發送到處理程序的單擊?

根據該文件,它聲明:

.simulate(event [,mock])=>自模擬事件

參數

event(String):要模擬的事件名稱mock(Object [optional]):一個模擬事件對象 ,它將與傳遞給處理程序的事件對象合並。

所以你需要修復你的代碼並傳遞一個對象:

.simulate('click', {myParam});

您還可以查看實現,並在此處查看如何將其傳遞給事件處理程序:

simulate(event, ...args) {
    const handler = this.prop(propFromEvent(event));
    if (handler) {
      withSetStateAllowed(() => {
        // TODO(lmr): create/use synthetic events
        // TODO(lmr): emulate React's event propagation
        performBatchedUpdates(this, () => {
          handler(...args);
        });
        this.root.update();
      });
    }
    return this;
  }

暫無
暫無

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

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