hey doing click_link
in rspec rails checking linked page content. content is on page it's still giving me error not.
the error
failure/error: page.should have_selector('h1', :text => "reset password")
this spec doing
- visits log_in_path
- clicks forgotten password
- which in effect visits new_password_reset_path
- looks
<h1>
reset password</h1>
password_resets_controller_spec.rb (the spec)
require 'spec_helper' describe passwordresetscontroller "emails user when requesting password reset" user = factorygirl.build(:user) visit log_in_path click_link "forgotten password?" current_path.should eq(new_password_reset_path) page.should have_selector('h1', :text => "reset password") end end
new.html.haml (log_in_path)
%h1 log in = form_tag sessions_path %p = label_tag :email = text_field_tag :email, params[:email] %p = label_tag :password = password_field_tag :password %p.button %input{name: "commit", type: "submit", value: "log in"} .field = label_tag :remember_me = check_box_tag :remember_me, 1, params[:remember_me] %p = link_to "forgotten password?", new_password_reset_path
new.html.haml (the page should go after clicking link)
%h1 reset password = form_tag password_resets_path, :method => :post .field = label_tag :email = text_field_tag :email, params[:email] .actions = submit_tag "reset password"
routes.rb
someapp::application.routes.draw "password_resets/new" "sessions/new" resources :sessions resources :password_resets resources :email_activations resources :users collection :accept_invitation end end "static_pages/home" "static_pages/help" root to: 'static_pages#home' match "sign_up", to: "users#new" match '/help', to: 'static_pages#help' match '/log_in', to: 'sessions#new' match '/log_out', to: 'sessions#destroy' end
it looks test code in controller spec instead of integration spec. have in spec file integration test, not controller test. page , visit part of capybara dsl , not available in controller specs. should either in spec/requests directory older versions of rspec-rails , capybara, or spec/features directory if using rspec-rails ~> 2.11.1 & capybara ~>2.0.0beta.
source: http://rubydoc.info/gems/rspec-rails/file/capybara.md
update:
since using older version of capybara, rename , move spec file to
someapp/spec/requests/password_resets_spec.rb
or run generator , put in right directory , file name
rails generate integration_test password_reset
Comments
Post a Comment