如何测试React组件异步方法
How to test React component asynchronous method
我有一个组件,它的方法绑定到其子组件的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片段
把它放在那里,让每个人都能看到。
需要复选框更改事件来响应以编程方式完成的选中状态的更改
基本上,问题是jQuery使用trigger('click')
而不是change
来实际更改复选框的状态。在这种情况下,change
就像另一个您不想要的自定义事件。
相关文章:
- React组件等待所需道具进行渲染
- React组件-设置页面标题
- 为react组件传递道具的最佳方式
- react组件中的绑定方法
- 加载服务器端渲染的React组件后执行脚本
- 如何基于依赖性导入React组件
- 可以't在我的React组件中加载图像
- jsx-React组件中的格式化编号
- 在进行服务器端渲染时,我可以向客户端发送React组件吗
- 使用jquery在react组件内部设置样式可以吗
- 为什么我不能将键映射到 React 组件上
- webpack样式加载器-在react组件上导入不同的样式,而无需重写
- 无法将react组件作为属性传递给另一个组件
- 继承React组件的正确方式
- 在JSX中围绕React组件封装高阶组件(HOC)
- 根据React组件的名称渲染该组件
- react组件的正确命名规范
- 在另一个文件夹中显示React组件
- AJAX 请求没有在我的 React 组件中设置 this.state.data
- 有没有一条清晰的路径,我可以实现一个在 ScalaJS + React 中广泛使用上下文的 React 组件