帮助跟踪控制器规范失败的原因

时间:2011-05-18 19:54:25

标签: ruby-on-rails controller rspec

我有一个失败的user_controller_spec.rb,我不知道为什么。

require 'spec_helper'

describe UsersController do

  describe "GET 'index'" do
    it "should be successful" do
      get 'index'
      response.should be_success
    end
  end


end

当我运行rspec时,它说:

Failures:

  1) UsersController GET 'index' should be successful
     Failure/Error: response.should be_success
       expected success? to return true, got false
     # ./spec/controllers/users_controller_spec.rb:8

Finished in 0.17047 seconds
1 example, 1 failure

在浏览器中转到/ home /页面可以正常工作。

有没有办法弄清楚它失败的更详细原因?

注意:

这是rails3,我正在使用rspec。

我也有capybara gem,并且搜索我的解决方案显示了对capybara的唯一引用是在我的gem和gem.lock文件中。

2 个答案:

答案 0 :(得分:2)

您可以尝试输出响应正文以查看消息是什么。可能是您登录的用户没有正确权限(或匿名访问您必须登录以查看的页面)的任何内容,以及测试环境中的奇怪视图错误。

get 'index'
puts response.body.inspect
puts response.status.inspect
...
response.should be_success

response.body将包含响应的HTML输出,因此您应该能够告诉它为什么不成功(希望它将具有堆栈跟踪或重定向或其他内容)。还要记住,重定向不是“成功”。如果我没记错be_success确保HTTP状态代码是200之一,重定向通常是302或304,所以不要计算。如果需要重定向,请尝试response.should be_redirect

答案 1 :(得分:1)

可能您不只是渲染页面,而是重定向。为了检查可能出现的问题,我会在我的规范中执行以下操作:

response.should == 1

以查看实际响应是什么。这将为您提供有关正在发生的事情的良好线索。