以下测试有时会失败:
N
我在it 'can create a new item' do
visit 'items/new'
within 'form#item-form' do
fill_in 'Name', with: 'Item'
click_button 'Create'
end
current_path.must_equal('/items')
assert page.has_content?('Item')
end
块之前添加了puts page.html
,发现有时页面会显示“未找到”页面。我正在使用Capybara的默认网络驱动程序within
。
在Capybara访问'route'和访问'/ route'之间有什么区别吗?
答案 0 :(得分:2)
是的,在许多情况下可能会有所不同,具体取决于您是否指定了Capybara.app_host,已经在当前测试中访问过网址等等。基本上如果您想转到/ items / new指定/项目/新
使用机架测试here和here时,您可以看到相关代码。其他驱动程序都有类似的行为,所以如果你真的明白你在做什么并且需要相对路径,那么只使用相对路径
在次要说明中,您应该远离在current_path上执行直接断言。当你使用机架测试时,它会正常工作,因为所有点击提交,链接等都是同步的 - 但是如果/当你转向使用支持JS的驱动程序时,这些操作不再保证同步,所以你最终会比较current_path在它实际改变之前。你应该习惯使用
的内容assert page.has_current_path?('/items')
因为那将在确认当前路径时使用Capybaras等待行为