预期的响应是<:redirect>,但是< 401>

时间:2012-02-20 23:08:23

标签: ruby-on-rails ruby rspec expectations

我最近开始将我的应用程序中的一些标准请求转换为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

我想断言未授权状态时会给出未经授权的状态。有人可以帮忙吗?

1 个答案:

答案 0 :(得分:1)

朋友(@JonRowe)在Twitter上的回复产生了:

@gavinlaking Re:堆栈溢出,尝试更改第二个测试以包含对主题的调用,例如。

it { subject; response.status.should == 401 }