我正在使用Cucumber / Capybara组合测试Rails 3应用程序。我还尝试使用Selenium测试一些特定于JavaScript的场景,但是遇到了我不理解的怪异难题。
我对黄瓜/水豚的经验很低,对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。
rails g cucumber:install
谢谢
我猜想您正在尝试将事务性固定装置(默认行为)与Selenium一起使用,但这行不通。当浏览器分别调用Rails应用程序时,在测试内管理的事务不在范围内,因此它无法查看测试已创建的任何未提交的数据。
除了使用事务处理固定装置外,您还需要使用数据库清洁器之一。
https://github.com/bmabey/database_cleaner
编辑:
我后来才知道,这 是 可以使用的事务灯具采用Selenium测试,性能更好,如果你做的(信贷基拉科里纳的答案)。有关详细信息,请参见http://pastie.org/1745020。