2011-05-18 72 views
6

我有一个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的。

我也有水豚宝石,并搜索我的解决方案显示只有参考水豚是在我的宝石和gem.lock文件。

回答

1

这可能是,你不只是呈现页面,但重定向。为了看到实际的反应是什么

response.should == 1 

:要检查什么可能是错的,我会做我的规格类似。这会给你一个关于发生的事情的线索。

+0

确定它现在工作谢谢(固定的东西,这是重定向),但总是失败,如果我做response.should == 1它是做什么的? – Blankman 2011-05-18 21:31:39

+0

是的,这个失败的目的:)你只是用它来检查你得到的实际价值是什么(它会说像预期的东西:成功,得到了:重定向。 – Spyros 2011-05-18 21:36:45

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

+0

伟大的提示,谢谢!顺便说一句,可以访问请求对象,看到原始网址请求等? – Blankman 2011-05-18 21:32:11