使用硒在水豚中创建动态记录不起作用

时间:2011-11-11 08:47:36

标签: database cucumber capybara

我正试图用硒驱动器对我的app进行黄瓜测试。在测试步骤中,我动态创建用户以登录应用程序。但是用户登录失败了我创建的用户。我已将user_transaction__ture设置为false。创建的记录仍然不适用于selenium应用程序。

这是代码

特征文件

@browser     场景:仅管理员可以访问管理页面         鉴于“admin@example.com”是管理员         当我以“admin@example.com”身份登录时 步骤定义文件

给出/“([^ \”] *)“是admin / do | email |

user = Email.active.find_by_address(email).try(:user)|| User.new({},:password =>

'Monkey_123',:password_confirmation => 'Monkey_123',:last_name => 'example',:first_name => '管理员')

user.update_attribute(:state,“active”)

user.update_attribute(:terms_and_conditions_accepted,1)

user.groups<< Group.find(1)

user.primary_email || = Email.new(:address => email,:state => Email :: State :: ACTIVE,

:email_type =>电子邮件::类型:: PRIMARY)

user.save!

当我使用capybara运行测试时,selenium driveri无法使用

登录我的应用程序

通过浏览器创建的用户。

我尝试使用ruby调试器,它显示了特定用户的创建。

以下是我在env.rb文件中的配置

如果已定义?(ActiveRecord :: Base)

开始

require 'database_cleaner'

DatabaseCleaner.strategy = :truncation

rescue LoadError => ignore_if_database_cleaner_not_present

Capybara.server_port = 9887#或者你想要的任何数字?

Capybara.app_host =“http:// localhost:#{Capybara.server_port}”

Capybara.default_wait_time = 4

Capybara.ignore_hidden_​​elements =假

之前('@ browser')做    Capybara.current_driver =:selenium 端

请为此提出解决方案。宝石版本是 1)黄瓜-v 0.10.7

2)黄瓜导轨0.3.2

3)Capybara 0.4.1.2

4)database_cleaner 0.5.0

谢谢

1 个答案:

答案 0 :(得分:1)

我和Cucumber,Capybara和Selenium有类似的问题。以某种方式设计不允许登录创建的用户。在测试期间,Cucumber无法通过浏览器使用创建的用户登录应用程序。当我将Capybara驱动程序设置为rack_test时,测试通过,但是当我将其设置为selenium时,它失败并显示“电子邮件或密码无效”。在Devise的登录页面上。

最后,我找到了答案herehere。使用事务夹具时,Selenium无法访问已写入数据库的信息。因此,您必须关闭事务夹具并将DatabaseCleaner策略设置为:截断。在您的配置文件中(在我的案例中为feature / support / env.rb和spec / spec_helper.rb)定义以下内容:在cucumber配置features / support / env.rb

DatabaseCleaner.strategy = :truncation

并在RSpec配置中spec/spec_helper.rb

RSpec.configure do |config|
  config.use_transactional_fixtures = false
  config.before :each do
    DatabaseCleaner.start
  end
  config.after :each do
    DatabaseCleaner.clean
  end
end