【问题标题】:Stubbing a common partial in a view spec in Rails在 Rails 的视图规范中存根公共部分
【发布时间】:2015-11-25 10:51:27
【问题描述】:

我在app/views/debtors/index.html.erb 有一个视图,它呈现位于app/views/application/_advanced_search.html.erb 的公共部分。

我想测试index 视图,但还需要存根上述部分。我怎样才能做到这一点?我试过了:

  • stub_template '_advanced_search' => 'Stubbed',但是部分没有找到;
  • stub_template '_advanced_search.html.erb' => 'Stubbed',同上;
  • view.lookup_context.view_paths.push 'app/views/application'stub_template '_advanced_search' => 'Stubbed',但随后它开始抱怨在部分中使用了未定义的变量。

我也尝试使用部分的完整路径,但仍然没有运气,它开始说部分丢失。

在 Rails 应用程序中存根公共部分的正确方法是什么?

【问题讨论】:

  • stub_template 'application/_advanced_search' => 'x' 呢?
  • 表示部分丢失。它在/home/user/project/app/views 中查找,然后在application/_advanced_search_controlsapplication/_advanced_search 中查找。
  • 奇怪...您可以看到 the implementation 只是将您的存根推到视图路径数组的开头。也许尝试查看该视图路径数组?否则我猜它的rails自动加载“魔法”变得混乱了。
  • 路径包含存根模板哈希,但我不知道它们是否正确形成或它们是如何看待的......另外,在我的问题的第三个项目符号中,如果我存根部分,为什么它会为该部分中的未定义变量引发错误?我很不解。

标签: ruby-on-rails ruby rspec partials


【解决方案1】:

有时 Ruby 会说“未找到部分”,因为您的部分文件中似乎有一些错误,一些 Ruby 错误。

我建议您首先显示任何不包含 Ruby 代码的硬编码 html,如果它有效,那么您的部分似乎有一些错误。

我之前也遇到过这个问题。

【讨论】:

  • 我目前使用这个部分有一段时间了,但我没有对视图进行任何测试。现在我开始写视图并解决这个问题。所以我认为局部没有问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-02-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多