2017-07-06 9 views
1

私は、Enzyme for Reactを使用して単体テストでonClickメソッドをシミュレートしようとしています。私は、パラメータとしてイベントを取ることはありませんどの私のonClickをシミュレートできるようにしたいしかし実際にEnzymeを使用してonClickメソッドをシミュレートする

handleClick(e) { 
    // Does something 
} 

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

が、代わりに何か他のものを取ります。私は、次のような、いくつかのイベントeを取るのonClickをシミュレートするために、多くのガイドを見つけました、すなわち:

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

私は.simulate('click', [myParam]);を使用してみましたが、私は期待どおりにパラメータを渡しませんでした。

特定のパラメータをハンドラに送信するクリックをシミュレートするにはどうすればよいですか?

答えて

2

それが述べdocumentatonに従って:

.simulate(イベント[モック])=>自動シミュレーションイベント

引数

イベント(文字列)イベント名にシミュレートされたモック(オブジェクト [オプション]):モックイベントオブジェクトは、 イベントオブジェクトとマージされ、ハンドラに渡されます。

ので、あなたのコードを修正し、オブジェクトを渡す必要があります:

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

あなたはまたimplementaionを見て、それがイベントハンドラhereに渡される方法を見ることができます。

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; 
    } 
+0

これは意味があります。 'モックイベントオブジェクト'は私を混乱させました。イベントハンドラに渡されるオブジェクトは何でもかまいません。 –

+0

これはそれを完全に固定しました、ありがとう! –

+0

投稿後10分はできません:/すぐに! –

関連する問題