Тестирование пользовательских представлений разработки в Rails 3 со спецификациями запроса Capybara и не использует новое настраиваемое представление - PullRequest
0 голосов
/ 10 мая 2011

Я могу открыть представление после запуска rails server, и я вижу только что созданное текстовое поле для billing_name, как показано ниже, и оно прекрасно работает.

Вид / регистрация / new.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

1 Ответ

0 голосов
/ 12 мая 2011

Когда вы переопределяете контроллеры Devise, обязательно переопределяйте маршруты devise_for.

Например (в rout.rb):

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

В вики Devise также есть пример .

...