为什么Selenium浏览器测试会在我的Cucumber场景中恢复到dev数据库?

时间:2012-05-17 03:33:30

标签: ruby-on-rails cucumber

My Cucumber方案用于测试来自第三方提供商的身份验证。当我在注册页面上点击facebook连接按钮时,重定向到Facebook,当Facebook授权凭据时,重定向就会发回我的网站。

在我的selenium测试中,它正在使用重定向开发数据库。我知道这是因为它最终出现在一个页面上,因为测试数据库是空的,所以数据不应该是这样的。

特征/ authentication.feature:

  @javascript
  Scenario: Signup through Facebook
    When I am on the signup page
    And I click the Facebook authentication link
    And I fill and submit the Facebook form
    Then I should be on the Add additional information page

这在I should be on the Add additional information page步骤失败,因为我从未到达那里。这意味着facebook用户存在一个数据行,这意味着它使用了开发数据库。我缺少一个设置吗?

特征性/支撑性/ env.rb

require 'cucumber/rails'

ENV["RAILS_ENV"] ||= 'test'
require File.expand_path(File.dirname(__FILE__) + '/../../config/environment')
Capybara.default_selector = :css
Capybara.javascript_driver = :webkit
Capybara.app_host = "http://localhost:3000"

# factory_girl Factory definitions
Dir[(Rails.root + "spec/factories/**/*.rb").to_s].each {|factory| require factory}

ActionController::Base.allow_rescue = false

Cucumber::Rails::Database.javascript_strategy = :truncation
Cucumber::Rails::World.use_transactional_fixtures = true

2 个答案:

答案 0 :(得分:0)

删除Capybara.app_host = "http://localhost:3000" 您正在开发环境中运行服务器并使Capybara使用它。

答案 1 :(得分:0)

如果这是facebook回调的必要条件,那么请确保您的开发服务器在测试环境中运行

   Capybara.app_host = 'http://localhost:3000'
   Capybara.always_include_port = false
使用

rails s --environment=test