2017-05-05 4 views
2

updateItem을 호출 한 후 내 구성 요소의 새 상태를 반영하도록 테스트를 수행하려면 어떻게해야합니까? rendereded_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

에서 콜백으로 –

답변

1

당신은 차일 소품에서 함수를 얻을를 호출해야합니다. 비동기/대기 또는 테스트에서 약속을 반환해야한다는 약속이 반환되므로 자세한 내용은 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'} 
    }) 
})