капибара текущий путь - PullRequest
2 голосов
/ 13 марта 2012

Я пытаюсь сделать простой тестовый пример входа в систему в 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

1 Ответ

1 голос
/ 13 марта 2012

Можете ли вы подтвердить, что вы на самом деле вошли в систему?

Попробуйте поместить page.should have_content("logged in") перед утверждением current_path.

И почему вы только создаете пользователя вместо того, чтобы создавать / сохранять его. Я надеюсь, вы понимаете, что Factory.build(:user) функции отличаются от Factory(:user), и это на самом деле не спасает пользователя.

...