0

onChange子コンポーネントのイベントにバインドするメソッドを持つコンポーネントがあります。手短に:

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: !@state.isRange

テスト中に、チェックボックスの値を変更して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 スニペット

4

1 に答える 1

0

みんなが見れるようにこれを出します。

プログラムで行われたチェック状態の変更に応答するには、チェックボックスの変更イベントが必要です

基本的に、問題は、チェックボックスの状態を実際に変更するのではtrigger('click')なく、jQuery が使用することです。この場合は、不要な別のカスタム イベントと同じです。changechange

于 2013-07-09T04:41:48.613 に答える