3

我正在使用 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)运行测试时,它在第三步失败(我应该看到 15 个事件的列表)。当我观察浏览器窗口时,实际上事件列表根本不包含任何事件——就好像它们不存在于数据库中一样。

顺便说一句,第一步(存在许多事件)使用 FactoryGirl 创建大量事件。

由于这对我来说都是新事物,我想知道我是否被一个典型的陷阱抓住了?除了从rails g cucumber:install. 另外,如果相关,我正在使用 OSX。

谢谢

4

2 回答 2

7

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

您需要使用数据库清理器 gem 之一,而不是事务性固定装置。

https://github.com/bmabey/database_cleaner

编辑:

后来我意识到可以将事务性固定装置与 Selenium 测试一起使用,如果这样做,性能会更好(归功于 Kira Corina 的回答)。有关详细信息,请参阅http://pastie.org/1745020

于 2011-04-02T20:00:50.010 回答
7

对于那些在 selenium 测试中对数据库有同样问题的人,这里有一个非常有用的聊天,其中包含 Jonas 总结的三个基本解决方案(参见 4 月 5 日的第一条消息): https://groups.google.com/forum/#!味精/ruby-水豚/JI6JrirL9gM/R6YiXj4gi_UJ

于 2011-05-21T11:25:38.560 回答