2017-05-05 8 views
2

updateItemを呼び出した後、コンポーネントの新しい状態を反映するためにテストを取得するにはどうすればよいですか?私はrendered.update()を試みましたが、何かがうまくいくかどうか不足しているはずです。ありがとう。クラスの酵素を介してクラスのメソッドを呼び出すときにコンポーネントの状態を更新します

方法:

updateItem (id) { 
    return updateItem(id) 
    .then((result) => { 
     this.setState({ 
      item: {blah:'blah'} 
     }); 
    }, (error) => { 
     throw error; 
    }); 
} 

テスト:

it("should update item accordingly",() => { 
    const rendered = shallow(React.createElement(Item)); 
    const result = rendered.instance().updateItem(); 
    expect(rendered.state('item')).toEqual({blah:'blah'}); 
}) 
+0

この方法ではうまくいかないと思われます。通常、コンポーネントではどのように関数が呼び出されていますか? –

+0

子コンポーネントのコールバックとして – groovy

+0

ですが、子要素propsから取得して呼び出すことができます。 –

答えて

1

あなたがお子様の小道具から関数を取得し、それを呼び出す必要があります。 async/awaitを使用するか、テストから約束を返す必要があるという約束を返すので、より多くの情報のためにdocsを見てください。次に、レンダリングされたコンポーネントの状態をテストします。

it("should update item accordingly", async() => { 
    const rendered = shallow(React.createElement(Item)); 
    await rendered.find('someChild).prop('updateItem')('someId') 
    expect(item.state).toEqual({ 
     item: {blah:'blah'} 
    }) 
}) 
関連する問題