2017-05-05 4 views
2

Wie kann ich meinen Test den neuen Status meiner Komponente nach dem Aufruf von updateItem darauf widerspiegeln. Ich habe versucht, rendered.update(), aber ich muss vermissen, wie etwas funktioniert. Vielen Dank.Get aktualisierten Status der Komponente beim Aufruf der Methode für die Klasse über das Enzym

Methode auf Klasse:

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

Test:

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

Ich denke nicht, dass es auf diese Weise funktionieren wird, wie Funktion in Ihrer Komponente normalerweise aufgerufen wird. –

+0

als Rückruf von Kind-Komponente – groovy

+0

Ok, aber dann können Sie es von den Child-Element-Requisiten und rufen Sie es. –

Antwort

1

Sie haben die Funktion von der Childs prop bekommen und es nennen. Wenn es ein Versprechen zurückgibt, das Sie benötigen, um async/await zu verwenden oder das Versprechen aus Ihrem Test zurückzugeben, werfen Sie einen Blick auf docs für weitere Informationen. Testen Sie dann den Status der gerenderten Komponente.

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'} 
    }) 
}) 
Verwandte Themen