ruby-on-rails-3 - Rails/Rspec View : The right way to test partials

标签 ruby-on-rails-3 rspec rspec2

我有一个 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/

相关文章:

ruby-on-rails-3 - 如何设置 RSpec 时区?

ruby-on-rails - 如何出于测试目的禁用缓存清扫器

ruby-on-rails - 使用 parallel_tests 测试在运行中被杀死

ruby-on-rails - 使用 activeadmin 和 formattastic 显示范围 slider 的值

ruby-on-rails-3 - 通过 rake 运行 rspec 测试时在装饰器中获取未初始化的常量(NameError)

ruby-on-rails - 运行生成rspec :install时找不到diff-lcs

ruby-on-rails - rspec:使用 render_views 从 Controller 规范中 stub 模板的辅助方法调用

rspec - 当第一个页面与第二个页面具有相同的字段时,等待第二个页面加载 Capybara 的正确方法

ruby - Rails & Bootstrap - 切换导航栏按钮无响应

ruby-on-rails - 使用包含图像的 Prawto 生成 PDF