如何测试视图助手渲染部分?

时间:2014-11-18 11:09:10

标签: ruby-on-rails partial view-helpers specs

假设我想根据控制器中的实例变量渲染不同的部分。我把逻辑放在一个帮助方法中,看起来像:

def display_my_partial(foo)
  foo == bar ? render(partial_x) : render(partial_y)
end

并在视图中调用(使用Slim):

= display_my_partial(@foo)

我的测试应该是什么样的?我试过像:

expect(display_my_partial(foo)).to render(partial: 'partial_x')

但得到了:

NoMethodError:
       undefined method `matches?' for #<ActiveSupport::SafeBuffer:0x007ffb490aba80>

我的例子有点复杂,因为我的部分是在嵌套的命名空间中。我只需要使用us render 'partial_x' vs render partial: 'namespace/model/partial_x'进行一些实验,以使其符合规范,但最后我得到了上述错误。

那你将如何测试呢?

1 个答案:

答案 0 :(得分:1)

你在哪里测试?确保调用render_views。

在任何情况下,你真的关心它正在渲染那部分吗?如果文件名已更改,或者您决定使用html帮助程序更改实现,该怎么办?这些对输出都不重要。我会亲自断言输出。根据输出的复杂程度,您可以在视图测试或简单的单元测试中完成。

HTH,