我有一个 Rails 3 部分,它将所有类别列为导航菜单 - 它出现在大多数但不是我的所有模板页面上......假设大约 75%。我现在正在尝试测试部分(在 RSpec 中),我刚刚意识到一些事情:
此刻,我在实际 View 中调用 Categories.all。困难在于,因为它触及数据库,我在 View 规范中的模拟/ stub 被忽略,因此测试失败。
我猜另一种方法是在应用程序 Controller 中分配变量,然后将其作为局部变量传递给局部变量。尽管如此,我仍有大约 25% 的页面不会使用该变量,我想知道是否有更优雅的处理方式。
简而言之,我希望在不触及测试数据库的情况下通过 View 规范,但我不确定传递给我的局部变量的全局变量是否是最好的方法...而且我没有在中声明变量每个(且仅)那些需要它的 Controller 。
任何建议表示赞赏...
最佳答案
为什么不为所有类别创建一个辅助方法?
# in categories helper def all_categories @all_categories ||= Category.all end
或者...
# application controller helper_method :all_categories def all_categories ...
然后您可以在您的规范中删除此方法,您将不会触及数据库
关于ruby-on-rails-3 - Rails/Rspec View : The right way to test partials,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5454550/