使用 Javascript 时,我无法使请求规范生效。如果我在没有 Javascript 的情况下运行它们,我的规格就会通过(页面被构建为可以使用或不使用 JS)。
具体来说,当我执行像Post.should have(1).record. Capybara 只是不从数据库中提取记录,并且在运行之间不会清理数据库。
我试过在禁用事务性装置的情况下使用 DatabaseCleaner - 我猜这是常用的方法。没有骰子。
我也尝试过(并且,理想情况下更喜欢)在没有 DatabaseCleaner 的情况下运行,使用事务性装置并强制 AR 在线程之间共享相同的连接(José Valim 描述的补丁)。再次,没有骰子。
此外,我还尝试在 Capybara-webkit 和 Selenium 之间切换 - 问题仍然存在。
我已经建立了一个示例应用程序,它只有一个基本的 Post 脚手架,它复制了这个问题:https : //github.com/cabgfx/js-specs 有一个带有事务装置和 AR 共享连接的 spec_helper.rb,以及一个 spec_helper_database_cleaner。 rb 用于其他场景。
我通常使用 Spork,但我在两个 spec_helper.rb 文件中都禁用了它,只是为了消除潜在的故障点(在两个应用程序中;“真实”应用程序和示例应用程序)。
我在 Macbook Air 上使用 Pow 进行本地开发,通过 RVM 运行 OS X 10.7.3 和 MRI 1.9.3。(我也在 1.9.2 上试过)。
希望我是有道理的 -非常感谢任何指导/帮助/指针!