Ruby on rails 在我的场景中,为什么Selenium浏览器测试要恢复到dev数据库?

Ruby on rails 在我的场景中,为什么Selenium浏览器测试要恢复到dev数据库?,ruby-on-rails,cucumber,Ruby On Rails,Cucumber,我的Cucumber场景用于测试来自第三方提供商的身份验证。当在我的注册页面上点击facebook connect按钮时,会发生重定向到facebook的情况,当凭据得到facebook授权时,会发生重定向回我的网站的情况 在我的selenium测试中,它使用重定向上的开发数据库。我之所以知道这一点,是因为它最终出现在一个页面上,页面上有一些数据,而这些数据不应该出现,因为测试数据库是空的 功能/身份验证。功能: @javascript Scenario: Signup through

我的Cucumber场景用于测试来自第三方提供商的身份验证。当在我的注册页面上点击facebook connect按钮时,会发生重定向到facebook的情况,当凭据得到facebook授权时,会发生重定向回我的网站的情况

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

功能/身份验证。功能:

  @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
这在
步骤失败,我应该在添加附加信息页面上,因为我从未到达那里。这意味着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

删除
Capybara.app\u主机=”http://localhost:3000“

您正在开发环境中运行服务器,并让Capybara使用它。

如果facebook回调需要这样做,请确保您的开发服务器正在测试环境中运行

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


我之所以设置app_主机是因为facebook需要一个地址。我目前已经给了他们
http:localhost:3000
。是否有一种方法可以设置本地测试地址,但同时不使用开发环境?谢谢你的帮助,佩德罗!你需要在测试中模拟Facebook请求。是否有一个github项目具有Facebook身份验证测试?那里的指南对模拟fb请求很有帮助。
rails s --environment=test