0

在过去的 2 天里,我一直在阅读我在博客、书籍、其他宝石的来源以及 SO 上可以找到的所有内容,但我终其一生都无法弄清楚这一点。诚然,我是编写 Ruby gems、Rails 引擎的新手,并不完全熟悉所有 RSpec 视图方法(但我正在尽可能多地学习)。

我已经在 Github 上公开了我的项目(尽管处于早期阶段,但这是基于我在最近的项目中重复使用的一些标记,我正在慢慢尝试将其引入这个 gem):

https://github.com/robmclarty/admin_bar-rails

在我弄清楚如何让我的测试正常工作时,我已经停止添加新功能。主要问题是我正在尝试运行的测试,它只是呈现部分视图(我可以在此基础上稍后检查其他内容),如下所示:

render :partial => 'admin_bar-rails/bar.html.haml'
rendered.should contain 'admin-panel'

...但我NameError从 RSpec获得了view_renderer如下信息:

Failures:

  1) rendering admin bar should render an empty admin bar
     Failure/Error: render :partial => 'admin_bar-rails/bar.html.haml'
     NameError:
       undefined local variable or method `view_renderer' for #<RSpec::Core::ExampleGroup::Nested_2:0x007f99f260ec88>
     # ./spec/views/admin_bar-rails/bar.html.haml_spec.rb:13:in `block (2 levels) in <top (required)>'

我已经尝试包含并要求我阅读过的各种内容(正如您从我的代码中的注释行中看到的那样),但我无法让它通过。

这主要是一个“将动态标记插入视图”的 gem,所以我(和你)可以在其他 Rails 项目中重用一些通用模板。我只是在做错事吗?人们甚至会在 gems 中测试这样的视图吗?谁能指出我使用 RSpec 的其他一些更注重视图/资产的 gem 示例?

4

1 回答 1

0

最终通过编译我之前在视图部分中拥有的标记并通过content_tag在辅助方法中的调用创建相同的东西来采取替代路径。这有几个好处:1) 将所有相关代码保存在一个地方,2) 使部件更易于测试,3) 简化 gem,因为现在我根本不需要任何视图(只需 Ruby/Rails 代码)。

注意:我删除了我在问题中链接到的旧 gem,并将其替换为以下内容:

http://github.com/robmclarty/admin_nav-rails

于 2013-06-06T19:09:07.430 回答