2011-11-11 38 views
3

我试图用硒驱动程序在水豚运行我的应用程序的黄瓜测试。在测试步骤中,我动态地创建用户以登录到应用程序。但用户登录失败,我创建的用户。我已将user_transactional_fixture设置为false。仍然创建的记录不适用于硒应用程序。动态创建水豚与硒不起作用

下面是代码

特性文件

@browser 方案:单独管理员可以访问管理页面 鉴于“[email protected]”是一个管理 当我在为登陆“[email protected]” 步骤定义文件

鉴于/ “([^ \”] *)”是一个管理/做|电子邮件|

用户= Email.active.f ind_by_address(email).try(:user)|| User.new({},:密码=>

'Monkey_123',:password_confirmation => 'Monkey_123',:姓氏=> '示例',:如first_name => '管理员')

user.update_attribute (:状态, “活性”)

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!

当我运行使用水豚和硒驱动器1测试

我无法登录到使用

通过浏览器创建的用户我的应用程序。

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

以下是我在env.rb文件

如果界定?(ActiveRecord的::基地)配置

开始

require 'database_cleaner' 

DatabaseCleaner.strategy = :truncation 

rescue LoadError => ignore_if_database_cleaner_not_present 

水豚.server_port = 9887#或者你想要的任何号码?

Capybara.app_host = “HTTP://本地主机:#{Capybara.server_port}”

Capybara.default_wait_time = 4

水豚。ignore_hidden_​​elements =假

( '@浏览器')之前做 Capybara.current_driver =:硒 结束

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

2)黄瓜导轨0.3.2

3)水豚0.4.1.2

4)database_cleaner 0.5.0

由于

+0

我没有看到问题。我也没有看到任何代码,如果你想让人们弄清楚你做错了什么,这会有帮助。 –

回答

1

我有一个类似的问题,黄瓜,水豚和硒。不知何故设计不允许登录创建的用户。在测试期间,Cucumber无法通过浏览器使用创建的用户登录到应用程序。当我将水豚驱动程序设置为rack_test时,测试通过了,但是当我将它设置为硒时,它失败并显示'无效的电子邮件或密码'。在Devise的登录页面上。

最后我找到了答案herehere。使用交易装置时,Selenium无法访问已写入数据库的信息。因此,您必须关闭事务性夹具并将DatabaseCleaner策略设置为:截断。在您的配置文件(在我的情况的功能/支持/ env.rb和投机/ spec_helper.rb)定义如下:在黄瓜配置功能/支持/ 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