ruby-on-rails – 如果只更改注册视图,是否需要自定义Devise控制
我在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在浏览器中打开的页面. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |