我正在使用Capybara使用RSpec测试Rails应用程序。正确调用visit "/bars"
会将我带到bars
资源的索引页面。但是,调用visit "/bars/1"
(其中bar
已保存id
1)神秘地将我带到索引页面,即使手动输入网址也可以正常工作。
索引页面甚至包含指向特定bars
页面的链接(例如"/bars/1"
),虽然这些链接在浏览器中运行良好,但这些链接上的Capybara click_link
会将我带回 - 你猜对了 - 索引页面。
在这两种情况下,show
控制器中的bars
方法在使用Capybara时甚至都不会被调用,但是当我在浏览器中点击时会调用它。
有谁知道发生了什么事?
答案 0 :(得分:0)
如果您已“将其保存到数据库”并可以在浏览器中查看,则它是开发数据库.Capybara处理测试数据库,您可能没有那里的记录。
虽然您没有这样的记录,但您可以将404重定向设置为主页,但预计Capybara会产生此类结果。
另一方面,在测试中使用名为id的1并不好。无法保证您上次插入的记录必须为ID 1.最好使用bars_path @bar
或bars_path Bar.last