2013-07-09 40 views
0

我有一個組件,其中綁定了子組件的onChange事件。簡而言之:如何測試React組件異步方法

DOM = React.DOM 

Range = React.createClass 
    getInitialState: -> 
    isRange: false 

    render: -> 
    check = DOM.input 
     type: "checkbox", 
     onChange: @rangeChanged, 
     checked: @state.isRange 
     name: "isRange" 
    DOM.form {}, [check] 

    rangeChanged: React.autoBind -> 
    @setState 
     isRange: [email protected] 

在測試期間,我想更改複選框的值並觸發change事件。 我的測試看起來像(使用mocha.js + expect.js):

root = $("#root") 

describe "test Range", -> 
    beforeEach -> 
    @range = Range() 
    React.renderComponent(@range, root[0]) 

    afterEach -> 
    React.unmountAndReleaseReactRootNode(root[0]) 

    it "should run event", (done) -> 
    r = root.find("input[name=isRange]").prop("checked", true).trigger('change') 
    setTimeout (=> expect(@range.state.isRange).to.be.true; done()), 10 

可惜我不能得到讓這個測試工作的任何解決方案。任何想法如何使其工作?

jsfiddle snippet

回答