2016-03-01 30 views
15

Mocha, enzim kullanarak reaktif bileşenlerin birim testleri oluşturmaya çalışıyorum. Aşağıda örnek bir bileşen bulunmaktadır.Mocha, Enzim: Enzim kullanılarak reaksiyon bileşenindeki özel fonksiyonların test edilmesi

Foo.js burada

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

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

Ve

test dosyasıdır.

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

Her şey iyidir. ama anlamadı nasıl Foo.js içinde birim test customFunction biz ise enzime bu soruya en iyi yanıtı gerçekten customFunction aslında yapıyor ne olduğuna bağlı

cevap

26

...

yapabilirsiniz kullandığınız için böyle işlevini çağırır: Bu örneğinin kendisinde durumunu ayarlayan bir fonksiyondur ve böylece render çıkış neye benzediğini etkiliyorsa

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

, sen .update() yanı

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

yep. çalışıyor. teşekkür ederiz .. – pnsrinivasreddy

+0

ama bu instace() yöntemini yapan bir şey, globalSorage ile birlikte işlenen bileşenin global kapsamıyla ilgili herhangi bir soruna sahip. Console test ederken ReferenceError: throw: localStorage tanımlı değil. – pnsrinivasreddy

+1

Bunun neden yanıt olarak işaretlenmediğinden emin değil. –