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

我正在测试一个带有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。

谢谢

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

您需要使用其中一个数据库更清洁的gem,而不是事务性工具。

https://github.com/bmabey/database_cleaner

编辑:

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

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