为什么我的Cucumber测试在使用Selenium时失败了?

时间:2011-04-02 16:50:03

标签: ruby-on-rails testing selenium cucumber capybara

我正在使用Cucumber / Capybara组合测试Rails 3应用程序。我也试图使用Selenium来测试一些特定于JavaScript的场景,但遇到了我不理解的奇怪困难。

我对Cucumber / Capybara的经历非常低,我对Selenium的经验是零。

以下是该方案:

Scenario: Browsing events
  Given many events exist
  And I am on the events page
  Then I should see a list of 15 events
  When I follow the first event
  Then I should be on the event page
  And I should see a google map
  And I should see the event details

当该场景在RackTest下运行时,它会一直传递到Google Map步骤,此时它会因为没有JavaScript而失败。这是预期的。

当我使用默认的JavaScript驱动程序(Selenium)运行测试时,它在第3步失败(我应该看到15个事件的列表)。当我观察浏览器窗口时,实际上事件列表根本不包含任何事件 - 几乎就像它们在数据库中不存在一样。

顺便提一下,第一步(存在许多事件),使用FactoryGirl创建一系列事件。

因为这对我来说都很新鲜,我想知道我是否被一个典型的陷阱所困扰?除了rails g cucumber:install的标准安装之外,我没有进行任何配置更改。此外,如果它是相关的,我正在使用OSX。

由于

2 个答案:

答案 0 :(得分:7)

我认为您正在尝试使用Selenium的事务夹具(默认行为),但这不起作用。当浏览器单独调用Rails应用程序时,在测试中管理的事务超出范围,因此它无法看到测试已创建的任何未提交的数据。

您需要使用其中一个数据库清理器宝石,而不是事务性工具。

https://github.com/bmabey/database_cleaner

编辑:

我随后意识到 可能会使用事件夹具和Selenium测试,如果你这样做,性能会更好(归功于Kira Corina的回答)。有关详细信息,请参阅http://pastie.org/1745020

答案 1 :(得分:7)

对于那些在selenium测试中遇到相同数据库问题的人来说,这是一个非常有用的聊天,其中包含Jonas总结的三个基本解决方案(请参阅4月1日,第5条消息): https://groups.google.com/forum/#!msg/ruby-capybara/JI6JrirL9gM/R6YiXj4gi_UJ