子フォームコンポーネントメソッドの保存機能を提供するコンテナコンポーネントがあります。私はJest &酵素(私は酵素が必要だと思いますか?)を使用して、子コンポーネントが親コンポーネントから渡された関数を起動するかどうかをテストしようとしています。二つの方法がそうのようになります。Jestを使用してReactコンポーネントのメソッドをテストする
class Parent extends Component {
handleSave = (someData) => (
/* do some ajax with someData */
)
render() {
return(
<ChildComponent {...this.props} handleSave={this.handleSave} />
)
}
}
class ChildComponent extends Component {
render() {
<form onSubmit={this.props.handleSave}>
<button type="submit">Submit</button>
</form>
}
}
とテスト:
import React from 'react'
import ParentContainer from '../src/ParentContainer'
describe('<ParentContainer />',() => {
it('Should fire handle save when PatientScheduler form saves',() => {
const component = mount(<ParentContainer />)
component.handleSave = jest.fn()
component.find('[type="submit"]').simulate('click')
expect(component.handleSave).toHaveBeenCalled()
})
})
私は取得しています失敗メッセージがあるExpected mock function to have been called.
私はそこに行く途中の90%だと感じる。ここで何が間違っていますか?ありがとうございました。
OKを実行するか、これが(ありがとう)提出の問題を解決するが、私はまだきちんと私のhandleSave方法をスパイするかどうかはわかりません。 –
主にこの行 'component.handleSave = jest.fn()'をテストしていくつかの欠陥があります。あなたは内部的な振る舞いではなく、外部のものについてテストするべきです。あなたの場合、私はあなたが実際の要求を行う一部のインポートされたモジュールを使用すると仮定します。あなたはこれを嘲笑してスパイする必要があります。 –