1


1

ユーザーセッションが最初に構築されてから保存されることをテストするユーザーセッションコントローラーのテストをしたいです。 私のUserSessionクラスは次のようになります。

クラスUserSession <Authlogic :: Session :: Base end

私のUserSessionsControllerのcreateメソッドは次のようになります。

def @ user_session.save flash [:notice] = "ログインに成功した場合、@ user_session = UserSession.new(params [:user_session])を作成します。それ以外の場合は、redirect_back_or_default manage_home_page_urlを表示します。new end end

私のコントローラの仕様は次のようになります。

UserSessionsControllerを記述します。

UserSession.stub!(:new).with(:email、:password)UserSession.should_receive(:new).with(:email => "[email protected]"、: password => "foobar")投稿:作成、:user_session => {:email => "[email protected]"、:password => "foobar"} end end

新しいメソッドをスタブアウトしましたが、テストを実行すると次のエラーが表示されます。

'UserSessionsController内のSpec :: Mocks :: MockExpectationError'は新しいユーザセッションを構築する必要があります 'new:予期しない引数が予想されるnew:({:password => "foobar"、:email => "[email protected]"}) ({:priority_record => nil}、nil)

それは私のコントローラのコードが呼び出される前に、新しいメソッドがUserSessionで呼び出されていますが。 activate_authlogicを呼び出しても違いはありません。

1 Answer


0


私が余分なものを得ていたとき、これは私のために働きました:(\ {:priority_record ⇒ nil}、nil)でUserSessionに新しいメッセージ

UserSession.should_receive(:new).at_least(1)xwith({:email => "[email protected]"、:password => "foobar"})