我有一个 react 组件,当我点击一个图标时,状态会改变,然后我输入一个输入而不是图标。
当我尝试在我的测试中模拟它时,使用 capybara 的组件不会改变。
有没有可能因为 capybara 的缘故点击在组件上不起作用?或者只是因为它是一个 React 组件而不起作用?
组件:
render() {
return (
<div>
{ this.state.editable ? this.renderEditableComponent() : this.renderNotEditableComponent() }
</div>
) }
renderEditableComponent() {
return (
<EditableDeliverLimit
value={ this.state.value }
handleClick={ this.handleClick.bind(this) } />
) }
renderNotEditableComponent() {
return (
<NotEditableDeliverLimit
value={ this.state.value }
handleClick={ this.handleClick.bind(this) } />
) }
测试:
Then "should successfuly change deliver limit" do
wait_for_selector_appearance("##{ad_table_row_id(@ad)} .ad-table-row-deliver-limit span")
find("##{ad_table_row_id(@ad)} .ad-table-row-deliver-limit span").click
wait_for_selector_disappearance("##{ad_table_row_id(@ad)} .ad-table-row-deliver-limit span")
end
最佳答案
您使用的 PhantomJS 和 Qt WebKit 版本已过时,不支持 React 所需的 Function.prototype.bind。升级到 PhantomJS 2.1.1+ 并使用 Qt 5.5.1 重建 capybara-WebKit
关于ruby - 单击不使用 React 组件 + capypara,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38829627/