【发布时间】:2012-04-16 13:36:24
【问题描述】:
在使用 Javascript 时,我无法让请求规范正常工作。 如果我在没有 Javascript 的情况下运行它们,我的规范 通过(该页面是为使用或不使用 JS 而构建的)。
具体来说,当我执行Post.should have(1).record 之类的断言时,规范会失败。
Capybara 只是不从数据库中获取记录,并且在运行之间没有清理数据库。
我已经尝试在禁用事务装置的情况下使用 DatabaseCleaner - 我猜这是常见的方法。没有骰子。
我也尝试过(并且最好更喜欢)在没有 DatabaseCleaner 的情况下运行,使用事务性固定装置并强制 AR 在线程之间共享相同的连接 (a patch described by 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 进行本地开发,运行 OS X 10.7.3 和 MRI 1.9.3 到 RVM。 (我也在 1.9.2 上试过)。
希望我说得通 - 任何指导/帮助/指针都非常感激!
【问题讨论】:
-
这在某个时候有效吗?
-
不使用 Javascript。当我在规范中删除 js: true 时,它仍然有效。
标签: ruby-on-rails testing rspec capybara capybara-webkit