2016-03-01 5 views
15

Ich arbeite an Unit-Tests der Reaktionskomponenten mit Mocha, Enzym. Unten ist eine Beispielkomponente.Mocha, Enzym: Unit testet benutzerdefinierte Funktionen in der Reaktionskomponente mit Enzym

Foo.js

class Foo extends React.Component { 
    customFunction=() => { 
    } 

    render() { 
     return (<div className={this.props.name}/>); 
    } 
} 

Und hier ist die Testdatei.

Foo-test.js

import React from 'react'; 
import { expect } from 'chai'; 
import { shallow, mount, render } from 'enzyme'; 
import Foo from '../src/Foo'; 

describe("A suite", function() { 
    it("contains spec with an expectation", function() { 
     expect(shallow(<Foo />).contains(<div className="foo" />)).to.equal(true); 
    }); 

    it("contains spec with an expectation", function() { 
     expect(shallow(<Foo />).is('.foo')).to.equal(true); 
    }); 
}); 

Alles ist gut. aber ich verstand nicht, wie Test customFunction in Foo.js zu Einheit, wenn wir Enzym verwenden

Antwort

26

Die beste Antwort auf diese Frage hängt wirklich davon ab, was es ist, dass customFunction eigentlich tut ...

Sie können rufen Sie die Funktion wie folgt aus:

wrapper.instance().customFunction('foo', 'bar'); 

Wenn es eine Funktion ist, die Zustand auf der Instanz setzt sich, und so wirkt, was die gerenderte Ausgabe aussieht, können Sie .update() auch

wrapper.instance().customFunction('foo', 'bar'); // uses setState internally 
wrapper.update(); // updates render tree 
// do assertions on the rendered output 
anrufen
+0

ja. das funktioniert. danke .. – pnsrinivasreddy

+0

aber eine Sache, die diese instace() -Methode hat irgendwelche Probleme mit dem globalen Geltungsbereich. Die Komponente, die gerendert wird, hat localStorage. Beim Testen der Konsole wird ReferenceError: localStorage nicht definiert. – pnsrinivasreddy

+1

Nicht sicher, warum dies nicht als Antwort markiert ist. –

Verwandte Themen