2017-12-28 6 views
1

Ich versuche, den Standardstatus meiner Komponente in meinen Enzymeinheitstests zu überprüfen. Dazu habe ich die folgende Komponente:enzym wrapper.state gibt null zurück

import React, { Component } from 'react'; 

class Picker extends Component { 
    constructor(props) { 
     super(props); 
     this.state = { 
     sources: true 
    }; 
} 

...

export default Picker; 

Schließlich mein Unit-Test wie folgt aussieht:

it('should contain `everything` as a default value',() => { 
    const wrapper = mount(<Picker name='cnn' />); 
    expect(wrapper.state('sources')).to.exist() 
}); 

Das Problem, das ich hier mit Blick auf bin ist Ich kann den Standardstatus der Komponente nicht abrufen. Die Funktion wrapper.state ('sources') sollte 'true' zurückgeben, wenn ich nicht falsch liege.

Gibt es einen anderen Schritt, den ich vermisse? Ich verwende "reagieren": "^ 16.2.0" und

  • "chai": "^ 4.1.2"
  • "Enzym": "^ 3.2.0"
  • " Enzym-Adapter-reagieren-16" : "^ 1.1.1"
  • "jsdom": "^ 11.5.1"
  • "Mokka": "^ 4.0.1"
  • „lauten die Reaktionen addons-test-utils ":" 15.6.2 "
+0

Versuchen Sie, die 'wrapper.state()' zu trösten und sehen Sie, ob sie '{source: true}' ausgibt. Wenn das der Fall ist, dann ist deine 'Chai' Behauptung falsch. Ich denke, es sollte 'expect (wrapper.state ('sources')) .be.true sein;' stattdessen. – norbertpy

+0

Danke für Ihre Antwort, @norbertpy. Ich konnte es mit der Antwort von Mike Shutte unten lösen. – eduardo

+0

Froh, dass Sie es gelöst haben. Dann markieren Sie seine Antwort als akzeptiert und geben Sie ihm eine positive Bewertung. Prost. – norbertpy

Antwort

1

Ich habe viel damit gerungen! Da Picker eine Unterklasse von Component ist, existiert der von Ihnen gesuchte Zustand tatsächlich unter wrapper.instance(), nicht wrapper.

Der "Wrapper" Rückgabewert von shallow und mount ist nur das: ein Wrapper. Es ist nicht die eigentliche Komponente, die Sie testen möchten. Ich betrachte es als eine kleine Umgebung, von der die Komponente umgeben ist.

Zur Behauptung auf Zustand, Requisiten und Funktionen auf einer Komponente zu machen, habe ich mehr Erfolg für das Erreichen:

const component = wrapper.instance() 

Dann auf component Sie .state nennen können, .props, & c.

Lassen Sie mich wissen, wenn Sie Fragen haben!

+0

Ich denke du hast recht, @Mike Schutte ... danke für deine Eingabe! – eduardo