一尘不染

与Selenium一起运行时,为什么我的Cucumber测试失败了?

selenium

我正在使用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。

谢谢


阅读 208

收藏
2020-06-26

共1个答案

一尘不染

我猜想您正在尝试将事务性固定装置(默认行为)与Selenium一起使用,但这行不通。当浏览器分别调用Rails应用程序时,在测试内管理的事务不在范围内,因此它无法查看测试已创建的任何未提交的数据。

除了使用事务处理固定装置外,您还需要使用数据库清洁器之一。

https://github.com/bmabey/database_cleaner

编辑:

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

2020-06-26