我经常与要求的测试失败,因为水豚是不是在等待AJAX事件在移动之前完成运行到问题的水豚。
谷歌似乎表明我应该使用:重新同步选项我的测试,以解决这个问题。 但它不工作。
为了证明这是一个问题,失败的测试可以通过将睡眠声明Ajax调用后确定。 这似乎哈克任何不好的做法,因为appropriote延迟将取决于运行测试机器的速度会有所不同。 并挑选适当大的值会严重减慢运行测试套件有很多AJAX动作。
一个失败/通过测试的一个例子是下面。 点击保存之前的睡眠,使路过的区别/失败的page.should have_content(“自定义项目”):
it "should be able create a new todo item", :js, :resynchronize, :focus do
# Visit new action
visit new_todo_list
# Fill in the name
fill_in "#name", "test list"
# Click on add item to launch inline popup
find('a.add-item').click
within '#new_item' do
fill_in 'todo_item_description', :with => 'custom item'
# Run ajax action to add currrent item
find('.btn').click
end
sleep(1)
# Save
find('a.save').click
page.should have_content('test list')
page.should have_content('custom item')
end
这是水豚或错误我做错了什么?
谢谢你的帮助...