在Capybara游览'route'和访问'/ route'之间有什么区别吗?

时间:2015-10-11 11:06:15

标签: ruby capybara minitest

以下测试有时会失败:

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'之间有什么区别吗?

1 个答案:

答案 0 :(得分:2)

是的,在许多情况下可能会有所不同,具体取决于您是否指定了Capybara.app_host,已经在当前测试中访问过网址等等。基本上如果您想转到/ items / new指定/项目/新

使用机架测试herehere时,您可以看到相关代码。其他驱动程序都有类似的行为,所以如果你真的明白你在做什么并且需要相对路径,那么只使用相对路径

在次要说明中,您应该远离在current_path上执行直接断言。当你使用机架测试时,它会正常工作,因为所有点击提交,链接等都是同步的 - 但是如果/当你转向使用支持JS的驱动程序时,这些操作不再保证同步,所以你最终会比较current_path在它实际改变之前。你应该习惯使用

的内容
assert page.has_current_path?('/items')

因为那将在确认当前路径时使用Capybaras等待行为