加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – 如果只更改注册视图,是否需要自定义Devise控制

发布时间:2020-12-16 21:09:44 所属栏目:百科 来源:网络整理
导读:我在capybara / rspec集成测试中有以下步骤,即只是尝试注册一个新成员. visit new_member_registration_path fill_in('Name:',:with = 'Rob Doe' ) fill_in('member_email',:with = 'rob@smith.com' ) fill_in('member_email_confirmation',:with = 'rob@smi
我在capybara / rspec集成测试中有以下步骤,即只是尝试注册一个新成员.
visit new_member_registration_path
 fill_in('Name:',:with => 'Rob Doe' )
 fill_in('member_email',:with => 'rob@smith.com' )
 fill_in('member_email_confirmation',:with => 'rob@smith.com' )
 fill_in('member_password',:with => 'secret')
 fill_in('Company or Venue Name:',:with => 'Rob Inc.')
 fill_in('Contact Number:',:with => '040544404440')
 click_button('Sign up')
 save_and_open_page

由于某种原因,’email’和’password’数据没有传递给DeviseRegistrations控制器(查看测试日志时它是空白的),因此导致验证失败.但是直到save_and_open_page没有rspec错误(因此正在填写这些字段).

我错过了什么?我是否需要继承DeviseRegistrations控制器?

测试Rails 3.0.7,机架测试0.5.7和rails 3.1rc1和机架测试0.6.0

解决方法

假设你的Gemfile中有调试器,这里就是你如何使用它. (这假设您正在使用Capybara的Rack驱动程序.)
# test.rb
visit new_member_registration_path
fill_in('Name:',:with => 'Rob Doe' )
debugger

终端将停止您的脚本并等待您做某事.

# Terminal
/file/path/to/you/test.rb:12
fill_in('Name:',:with => 'Rob Doe' )
(rdb:1)

在这里打开一个IRB会话:

(rdb:1) irb

你可以在这里做任何RSpec或Capybara方法:

>> current_path.should == 'foo/bar'

尝试提交表单:

>> click_button "Sign Up"
>> save_and_open_page

查看Devise在结果页面上给您的错误消息.使用Rack驱动程序,您将看不到填写的字段.在这种情况下,您可能想尝试使用Selenium驱动程序

# test.rb
Capybara.default_driver = :selenium
visit new_member_registration_path

但是,您无法使用Selenium驱动程序从IRB驱动Capybara.但是,您将能够看到Selenium将哪些表单值放入您的表单中.由于Selenium会很快发生事情,您可以使用调试器暂停测试,同时检查Selenium在浏览器中打开的页面.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读