如何使用RSpec测试Rails引擎gem的view partial或helper方法



我花了两天时间阅读了所有我能在博客、书籍、其他宝石源和SO上找到的东西,但我怎么也弄不明白。无可否认,我刚开始编写Ruby宝石、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内部测试这样的视图吗?谁能给我指出一些其他的gem例子,更多的视图/资产重,使用RSpec?

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

注意:我删除了我在问题中链接到的旧宝石,并用以下内容替换:

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

最新更新