2016-03-01 7 views
15

Sto lavorando alla creazione di test unitari di componenti reattivi utilizzando mocha, enzima. Di seguito è riportato un componente di esempio.Mocha, Enzima: Unità che verifica le funzioni personalizzate nel componente reattivo utilizzando l'enzima

Foo.js

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

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

E qui è il file di test.

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); 
    }); 
}); 

Tutto è buono. ma non ho capito come unità di prova customFunction in Foo.js quando stiamo usando enzima

risposta

26

La migliore risposta a questa domanda in realtà dipende da che cosa è che customFunction sta effettivamente facendo ...

Puoi chiamare la funzione come questa:

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

Se si tratta di una funzione che imposta lo stato nell'istanza stessa, e quindi colpisce ciò che l'output di rendering sembra, si consiglia di chiamare .update() così

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

sì. questo funziona. grazie .. – pnsrinivasreddy

+0

ma una cosa che fa questo metodo instace() ha qualche problema con scope globale. il componente che è reso ha localStorage. durante il test della console lanciare ReferenceError: localStorage non è definito. – pnsrinivasreddy

+1

Non sono sicuro del motivo per cui questo non è contrassegnato come risposta. –

Problemi correlati