난 당신이 로그인 사용자의 이메일과 비밀번호를 사용하는 카피 바라의 간단한 로그인 예제 테스트를 만들기 위해 노력하고있어, 그것은 어떤 이유로 카피 바라를 들어카피 바라 현재 경로
"로그인"통지와 함께 root_url 리디렉션 내가 login_path "/ login"에서 click_on 로그인을 사용했다고보고하지만 레일을 실행할 때 나는 root_path "/"에 있습니다.
카피 바라 또는 테스트 응용 프로그램에서 무엇을 놓쳤습니까? 모든 관련 코드가 아래에 있어야합니다.
컨트롤러/sessions_controller.rb
def create
user = User.find_by_email(params[:email])
if user && user.authenticate(params[:password])
session[:user_id] = user.id
redirect_to root_url, notice: "logged in"
else
redirect_to login_path, notice: "Email or password incorrect"
end
end
보기/세션/new.html.erb
<h1>Sessions Log In</h1>
<%= form_tag sessions_path do %>
<div class="field">
<%= label_tag :email %><br />
<%= text_field_tag :email, params[:email] %>
</div>
<div class="field">
<%= label_tag :password %><br />
<%= password_field_tag :password %>
</div>
<div class="actions"><%= submit_tag "log in" %> </div>
<% end %>
login_spec.rb
it "should let you login with correct password" do
user = Factory.build(:user)
visit login_path
fill_in "Email", :with => user.email
fill_in "Password", :with => user.password
click_on "log in"
current_path.should == root_path
page.should have_content("logged in")
end
routes.rb
...
get 'login', to: 'sessions#new', as: 'login'
...
Factories.rb
Factory.define :user do |f|
f.sequence(:email) {|n| "a#{}@a.a"}
f.password "a"
end
실제로 로그인했는지 확인할 수 있습니까? 현재 경로를 선언하기 전에'page.should have_content ("logged in")를 배치 해보십시오. 왜 사용자를 생성하거나 저장하는 대신 사용자 만 구성하는 것입니까? Factory.build (: user)'가 Factory (: user)와 다른 기능을하고 실제로는 사용자를 저장하지 않는다는 것을 알기를 바랍니다. – prasvin
정확하게 맞았습니다. 나는 건축 대신에 창조하려고했다. 답변으로 넣어주세요. 제발 틱 할 수 있습니다. – BookOfGreg