Rails / Rspec视图:测试局部的正确方法

时间:2011-03-28 04:04:16

标签: ruby-on-rails-3 rspec rspec2

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

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

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

简而言之,我希望视图规范在不触及测试数据库的情况下通过,但我不确定传递给我的部分的全局变量是最好的方法...而且我不是在声明变量每个(并且只有)那些需要它的控制器。

任何赞赏的建议......

1 个答案:

答案 0 :(得分:2)

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

  # in categories helper

def all_categories
  @all_categories ||= Category.all
end

或者...

# application controller

helper_method :all_categories

def all_categories 
...

然后,您可以在规范中删除此方法,而不会触及数据库