2011-03-28 54 views
3

我有一个Rails 3部分列出所有类别作为导航菜单 - 它是在大多数,但不是我的所有模板页面...让我们说75%左右。我试图现在测试部分(在RSpec中),我刚刚意识到一些事情:Rails/Rspec视图:正确的方式来测试部分

目前,我在实际视图中调用Categories.all。困难在于,因为触及数据库,视图规范中我的模拟/存根被忽略,因此测试失败。

我猜测的替代方法是在应用程序控制器中分配变量,然后将其作为局部变量传递给局部变量。尽管如此,我的网页中大约有25%不会使用这个变量,我想知道是否有更优雅的做事方式。

简而言之,我希望视图规格可以在不碰触测试数据库的情况下通过,但我不确定传递给我的局部变量的全局变量是否是最好的方法......而且我没有声明变量每个(仅限于&)需要它的那些控制器。

任何建议表示赞赏...

+0

我有这个问题了。看到spec文件的代码片段以及可能的视图会很有帮助。 – Ivan 2011-06-29 15:33:19

回答

2

为什么不为所有类别创建一个辅助方法?

 
    # in categories helper 

def all_categories 
    @all_categories ||= Category.all 
end 

或者......

 
# application controller 

helper_method :all_categories 

def all_categories 
... 

然后,您可以存根出在你的规格这种方法,你将不会被触及DB

相关问题