2017-10-18 10 views
3

フォームコンポーネントをテストするためにJestとEnzymeを使用していますが、クリックシミュレーションがうまくいかない。参考のために:Buttonはスタイルrebassボタンであり、このような形で存在します、酵素シミュレーション「クリック」が必要なときに機能しない

ここで注意しなければならない何
it('should handle the onClose event',() => { 
     const onCloseSpy = jest.fn(); 
     const renderedComponent = mount(renderFormUtil({ onClose: onCloseSpy })); 
     expect(onCloseSpy).not.toHaveBeenCalled(); 
     console.log(renderedComponent.find(Form).props().onClose); 
     renderedComponent 
     .find(Button) 
     .first() 
     .simulate('click'); 
    expect(onCloseSpy).toHaveBeenCalled(); 
    }); 

場合、私は交換することである:

<Button 
    type="reset" 
    disabled={pristine || submitting} 
    onClick={() => onClose(dirty)} 
> 

ここで失敗のテストです次の行をシミュレートしてください。

renderedComponent 
    .find(Button) 
    .first() 
    .props() 
    .onClick(); 

突然私のテストに合格します。これはどのように可能ですか? onClick小道具が正しい場合、それはクリックイベントが小道具を正しく呼び出さないことを意味しませんか?

+0

?私は 'Button'がどのように見えるかは分かりませんが、2つの異なるコンポーネントをテストしているので、同じ結果は期待できません。 –

+0

申し訳ありませんが、それらは同じコンポーネントです - 単純化のために、コンポーネント名にSubmitという単語を取り除くつもりだった –

答えて

0

2つのコンポーネントが同じセレクタを使用しているため、2つのコンポーネントが同じコンポーネントを選択するかどうかは不明です。これと組み合わせて、.first()を使用しています。これは、サンプルコードでの注文についてはわかりません。
.first()を使用せず、希望のコンポーネントを.findとするだけで、より具体的なセレクタを使用できます。そのために、あなたは、特定のButtonSubmitためidを追加することができますし、のようなセレクタを使用します。
使用すると、1つのケースと他では `.find(ボタン)`に `` .find(ButtonSubmit)を使用しないのはなぜ .find('ButtonSubmit[id="foo"]')

+0

申し訳ありません、私はちょうど質問を編集しました - ButtonSubmitはありません。私はこの質問をするために名前のその部分を取り除き、それがより簡単になるようにしたが、明らかに徹底的な仕事をしなかった。 AFAIKという同じ要素を選択する必要があります。 –

関連する問題