我有一个Rails 3部分列出所有类别作为导航菜单 - 它在大多数,但不是我的所有模板页面...让我们说约75%。我现在正试图测试部分(在RSpec中),我刚刚意识到了一些事情:
目前,我在实际视图中调用Categories.all。困难在于,因为触及数据库,我的视图规范中的模拟/存根被忽略,因此测试失败。
我猜测替代方法是在应用程序控制器中分配变量,然后将其作为局部变量传递给partial。尽管如此,我的页面中大约有25%不会使用变量,我想知道是否有更优雅的做事方式。
简而言之,我希望视图规范在不触及测试数据库的情况下通过,但我不确定传递给我的部分的全局变量是最好的方法...而且我不是在声明变量每个(并且只有)那些需要它的控制器。
任何赞赏的建议......
答案 0 :(得分:2)
为什么不为所有类别创建辅助方法?
# in categories helper def all_categories @all_categories ||= Category.all end
或者...
# application controller helper_method :all_categories def all_categories ...
然后,您可以在规范中删除此方法,而不会触及数据库