2016-09-29 7 views
2

カスタムイベントに対してEnzymeのメソッド.simulate()を使用することは可能です。例については :カスタムイベントでEnzyme simulateを使用しますか?

// Code 
<Element onFoo={someFunction}></Elements> 

// Test 
const element = shallow(<Element>); 
element.simulate('foo'); 

が、これはカスタムイベントが酵素でテストしなければならない方法ですか、使用するより良いアプローチですs.th. like:

//Test 
const element = shallow(<Element>); 
element.props.onFoo() 

答えて

2

カスタムイベントの.simulate()は実装されていないようです。

上のカスタムイベントをsiumlateしようと、私のために働いた何
wrapper.find(Child).prop('customEvent')(fakeEvent) 
+1

ご回答ありがとうございます。 on ..がその前にある限り(例えばonFoo)、カスタムイベントのシミュレート()woks。私はsimulate()メソッドを誤って使用しているので、APIの変更がテストをクラッシュさせてしまったのか、それは誤解ではなく、実装は正常です。 – Frank

0

:このトピックが議論されていると酵素メンテナの一つは、あなたが提供してきた第二のアプローチを使用することを示唆してgithubの、上のissueがあります次のようにトップレベルのコンポーネントがいたされていないコンポーネント:

const myComponent = enzymeWrapper.find('MyComponent'); 
myComponent.node.onThingSelected({}, { thing: newThing}); 

myComponentというが反応成分である、onThingSelectedコンポーネントでの名前のとおりにカスタムイベントハンドラで、newThingが予想される型のオブジェクトでありますイベントハンドラによって呼び出されます。

1

しかし、実際には現在の浅いレンダリングではまだ動作していませんか?

/* Film component */ 
render() { 
    return (
    ... 
    <FilmHeader onSearchClick={this.handleSearchClick}> 
    ... 
) 
} 

/* Test */ 
const wrapper = shallow(<Film {...props} />); 
wrapper.find('FilmHeader').simulate('searchClick'); 

上述の酵素issueはまだ開いている。ドキュメントには、この機能について明白なことは記載されていません。多分問題はドキュメンテーションそのものです。

+0

上記のコードは、少なくとも酵素3と反応16でうまくいきます。 – dubbha

+0

@KARTHIKEYAN A.、私はあなたの 'を得ることが確実ではありません.'以前にあったかもしれません。編集してください。 – dubbha

関連する問題