내 레일 애플리케이션의 사용자 로그인에 대한 통합 테스트에 문제가 있습니다. 내가 RSpec에와 카피 바라를 사용하여뿐만 아니라, 사용자 인증 여기rspec/devise로 로그인 통합 테스트
를 위해 고안하고있어
내 코드입니다 :
요청/authentications_spec.rb
describe 'log in' do
before { visit root_path }
subject { page }
describe 'should be able to log in' do
before do
user = FactoryGirl.create(:user)
fill_in :user_email, with: user.email
fill_in :user_password, with: user.password
click_on 'Log in'
end
it { should have_link 'Log out' }
end
end
공장/user_factory.rb
FactoryGirl.define do
factory :user do
sequence(:first_name) { |n| "FirstName#{n}" }
sequence(:last_name) { |n| "LastName#{n}" }
sequence(:email) { |n| "foo#{n}@example.com" }
password 'foobar'
password_confirmation 'foobar'
created_at Time.now
updated_at Time.now
end
end
_login_form.html.erb, 이 fo rm은 응용 프로그램 레이아웃 머리글에 렌더링됩니다.
if user_signed_in?
render 'devise/menu/logout_button'
else
render 'devise/menu/login_form'
end
시험은 나에게주고있다
1) User should be able to log in with valid credentials
Failure/Error: it { should have_link 'Log out' }
expected link "Log out" to return something
# ./spec/requests/authentications_spec.rb:117:in `block (6 levels) in <top (required)>'
Finished in 0.71406 seconds
8 examples, 2 failures, 2 pending
내 테스트를 통과하지 왜 내가하지 않습니다 : 레이아웃에서
<%= form_for(resource, as: resource_name, url: session_path(resource_name), html: { id: 'login-mini-form' }) do |f| %>
<%= f.email_field :email, placeholder: 'Your email' %>
<%= f.password_field :password, placeholder: '******' %>
<%= f.submit "Log in", id: 'login-button' %>
<%- if devise_mapping.rememberable? -%>
<%= f.check_box :remember_me %> <%= f.label :remember_me %>
<%- end -%>
<% end %>
나는 그런 일이있다. 어떤 아이디어?
고맙습니다.
편집 : 테스트를 반환 expect { click_button register_button }.to change(User, :count).by 1
: 나는 함께 등록을 테스트 같은 동작을 얻을 당신은 당신의 기대의 제목을 제공하지 않았다
Failure/Error: expect { click_button register_button }.to change(User, :count).by 1
count should have been changed by 1, but was changed by 0
전체 RSpec 출력을 제공해 주시겠습니까? – tsm
개업식을 편집했습니다 :) –
로깅을 확인할 수 있습니까? 명백한 오류가 있는지'log/test.log'를 확인하십시오. – nathanvda