1

最近、アプリケーションにある標準リクエストの一部をXHR(Ajax)リクエストに変換し始めました。これを反映するようにRSpecテストを更新中ですが、次のエラーメッセージが表示されます。

Expected response to be a <:redirect>, but was <401>

私のスペックは次のようになります:

describe "#index" do
  subject { xhr :get, :index, params }
  it { should redirect_to new_customer_session_path }
end

test.logファイルのエントリは次のようになります。

(0.2ms) BEGIN
Processing by SocialNetworks::FacebookCommentsController#index as JS
Parameters: {"id"=>"84", "facebook_post_id"=>"17"}
  Completed 401 Unauthorized in 21ms
  Rendered text template (0.0ms)
(0.2ms) ROLLBACK

これらは、サインインしていない(許可されていない)ユーザーのコンテキスト内にあります。アサーションを次のように変更すると:

it { response.status.should == 401 }

このエラーが発生します:

Failure/Error: it { response.status.should == 401 }
    expected: 401
         got: 200 (using ==)

そして、それぞれの役に立たないログエントリ...

(0.1ms) BEGIN
(0.0ms) BEGIN
(0.1ms) ROLLBACK
(0.1ms) ROLLBACK

無許可のステータスが与えられた場合、無許可のステータスが与えられることを断言したいと思います。誰か助けてもらえますか?

4

1 に答える 1

1

Twitterでの友人(@JonRowe)からの応答は次のようになりました。

@gavinlaking Re:スタックオーバーフロー、2番目のテストを変更してサブジェクトへの呼び出しを含めてみてください。

it { subject; response.status.should == 401 }
于 2012-02-21T13:33:25.490 に答える