2010-11-10 294 views
1

我是Rails和Rspec的新成员。 我Rspec的文件不采取控制的财产(如实例变量)使用Rspec进行控制器测试

assigns[:portal_news].should be_new_record 

它总是给人错误:

You have a nil object when you didn't expect it! 
You might have expected an instance of ActiveRecord::Base. 
The error occurred while evaluating nil.new_record? 

任何人都可以找到解决这个问题呢?

回答

0

你的控制器方法应该是在创建模型的新实例,并将其分配给@ portal_news`,也许是这样的:

@portal_news = MyModel.new 

我们需要看到相关的控制器方法的内容,以及失败的规范,能够帮助你弄清楚这一点。

+0

在控制器代码:@ portal_news = PortalNews.new被提及。但portal_news变量不能在portal_news_controller_spec文件访问。请找到解决方案 – Arun 2010-11-12 06:42:14

+1

有几种可能性。你有没有'before_filter's可以阻止赋值语句被达到?尝试访问浏览器中的页面时,是否也遇到同样的错误? – zetetic 2010-11-12 06:55:15

+0

感谢您的回复。在控制器我已经评论过所有filters.but在那之后,它仍然无法正常工作。我在rails上安装了rspec(2.1.0)和rspec-rails(2.1.0)2.3.5 – Arun 2010-11-12 08:32:25