10

私の人生では、Authlogic がこの統合テストで私をログインさせない理由がわかりません。このコードを使用した機能テストで、Authlogic がログインすることに問題はありませんでした。authlogic rdocs ( http://tinyurl.com/mb2fp2 ) によると、ログイン状態をシミュレートすることは、機能テストと統合テストで同じであるため、かなり混乱しています。どんな助けでも大歓迎です!

class TipsController < ApplicationController
  before_filter :require_user,  :only => [:destroy, :undelete]
  def destroy
    @tip = Tip.find(params[:id])

    if can_delete?(@tip)

      @tip.destroy

      set_flash("good", "Tip deleted. <a href=\"#{undelete_tip_url(@tip.id)}\">Undo?</a>")
      respond_to do |format|
        format.html { redirect_to city_path(@tip.city)} 
      end
    else
      set_flash("bad", "Seems like you can't delete this tip, sorry.")
      respond_to do |format|
        format.html { render :action => "show", :id => @tip} 
      end
    end
  end
end


class DeleteTipAndRender < ActionController::IntegrationTest
  context "log user in" do
    setup do
      @user = create_user
      @tip = create_tip
    end

    context "delete tip" do
      setup do
        activate_authlogic
        UserSession.create(@user)
        @us = UserSession.find
        post "/tips/destroy", :id => @tip.id
      end

      should_redirect_to("city_path(@tip.city)"){city_path(@tip.city)} 
    end
  end
end
4

9 に答える 9

3

user_sessions_controller createログイン資格情報のハッシュを取得するメソッドのコードに基づいて、統合テストで次のように機能させることができました。

UserSession.create(:email => 'someone@example.com', :password => 'password')

ただし、次の場合は除きます。

UserSession.create(@user)
于 2009-08-26T04:09:36.997 に答える
2

ええ、私は今週、rspec を使用することを発見しました: 機能仕様では、ログインをシミュレートしますUserSession.create(@user)。しかし、統合仕様でそれを試してもうまくいきません。統合仕様からログインするには、(webrat を使用して) フォームを操作する必要がありましたが、これは明らかに Facebook や OpenID ログインなどの問題になります。

于 2009-10-02T05:05:49.113 に答える
2

統合テストでは、投稿からログインする必要があることがわかりました。

setup do
  post 'user_session', :user_session => {:email => 'someone@example.com', :password => 'password'}
end

これにより、セッションが正しくセットアップされますが、上記の方法は機能テストでのみ機能します。

于 2009-09-03T16:29:36.020 に答える
1

Google と Greater Justice でこの投稿を見つけた人のためにpersitence_token、User モデルで属性を設定する必要があります。たとえば、電話をかける@user.reset_persistence_token!と、すべてが機能し始めます。:)

于 2010-10-28T07:47:37.250 に答える
0

私は同じ問題を抱えていて、手動でログインすることで修正できました(他の人がすでに答えているように)

さらに、 Cookieドメインを修正する必要がありました。

Railsはテストに使用し、ログイン後に作成されたセッションCookieでCookieドメインをwww.example.com別の値に設定したため、後続のリクエストからアクセスできませんでした。application.rbconfig.cookie_domain

正しいCookieドメインを設定した後、すべてが再び機能しました。

于 2012-09-04T08:55:41.207 に答える
0

私はCucumberとJamesのソリューションを使用しており、次の修正が有効でした。

https://webrat.lighthouseapp.com/projects/10503/tickets/383-reset_session-and-webrat-dont-play-nicely-with-one-another

于 2010-10-16T22:03:41.507 に答える
-3

rdocを見てください。

于 2009-08-05T19:31:41.010 に答える