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

aar*_*ell 3 testing selenium ruby-on-rails 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
Run Code Online (Sandbox Code Playgroud)

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

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

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

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

谢谢

Ste*_*sen 7

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

您需要使用其中一个数据库清理器宝石,而不是事务性固定装置.

https://github.com/bmabey/database_cleaner

编辑:

我后来才知道,这可以使用的事务灯具采用Selenium测试,性能更好,如果你做的(信贷基拉科里纳的答案).有关详细信息,请参见http://pastie.org/1745020.


Tat*_*Tyu 7

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