在带有水豚请求规范的 Rails 3 中测试自定义设计视图,并且它没有使用新的自定义视图



我可以在运行rails server后打开视图,我看到新创建的billing_name文本字段,如下所示,它工作得很好。

视图/注册/新建.html.erb

<h2>My New Signup</h2>
<%= form_for(resource, :as => resource_name, :url => registration_path(resource_name)) do |f| %>
<%= devise_error_messages! %>
<p><%= f.label :email %><br />
<%= f.email_field :email %></p>
<p><%= f.label :password %><br />
<%= f.password_field :password %></p>
<p><%= f.label :password_confirmation, 'Password Confirmation' %><br />
<%= f.password_field :password_confirmation %></p>
<p><%= f.label :billing_name, 'Billing Name' %><br />
<%= f.text_field :billing_name %></p>
<p><%= f.submit "Sign up" %></p>
<% end %>

但是,当我运行我的规范时,它似乎正在查看默认的设计视图,并且找不到新创建的billing_name字段。如果我在尝试访问规范中的该字段之前save_and_open_page,它会显示默认的设计注册页面,即使当我运行 rails server -e test 时,它也会显示我的新自定义视图。

这是规格:

规格/请求/registration_spec.rb

require 'spec_helper'
describe "Registraion" do
  describe "GET /signup" do
    it "allows signup with proper credentials" do
      visit signup_path
      fill_in "user_email", :with => "sample@email.com"
      fill_in "user_password", :with => "password"
      fill_in "user_password_confirmation", :with => "password"
      save_and_open_page
      fill_in "user_billing_name", :with => "First Last"
    end
  end
end

而我的规范助手只是自动生成的基本帮助程序:

规格/spec_helper.rb

ENV["RAILS_ENV"] ||= 'test'
require File.expand_path("../../config/environment", __FILE__)
require 'rspec/rails'
Dir[Rails.root.join("spec/support/**/*.rb")].each {|f| require f}
RSpec.configure do |config|
  config.mock_with :rspec
  config.fixture_path = "#{::Rails.root}/spec/fixtures"
  config.use_transactional_fixtures = true
end

当您覆盖 Devise 控制器时,请确保也覆盖devise_for路由。

例如(在 routes.rb 中):

devise_for :users, :controllers => { :registrations => 'registrations' }

Devise wiki也有一个例子。

相关内容

  • 没有找到相关文章

最新更新