我有一个失败的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文件中。
答案 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
以查看实际响应是什么。这将为您提供有关正在发生的事情的良好线索。