Я пытаюсь сделать простой тестовый пример входа в систему в capybara, где вы используете для входа в систему адрес электронной почты и пароль пользователя, и он перенаправляет на root_url с уведомлением «logged in»
По какой-то причине отчеты по капибарамчто я нахожусь в login_path "/ login" после того, как использую вход в click_on, но когда я запускаю его, я нахожусь в root_path "/" с моим уведомлением.
Что я пропустил ни в капибаре, ни в моем тестеприложение?Весь соответствующий код должен быть ниже.
controllers / session_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
view / session / 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
rout.rb
...
get 'login', to: 'sessions#new', as: 'login'
...
Фабрики.rb
Factory.define :user do |f|
f.sequence(:email) {|n| "a#{}@a.a"}
f.password "a"
end