Ruby on rails 如何测试视图辅助对象渲染局部视图?

Ruby on rails 如何测试视图辅助对象渲染局部视图?,ruby-on-rails,partial,view-helpers,specs,Ruby On Rails,Partial,View Helpers,Specs,假设我想根据控制器中的实例变量呈现不同的部分。我将逻辑放在一个助手方法中,该方法类似于: def display_my_partial(foo) foo == bar ? render(partial_x) : render(partial_y) end expect(display_my_partial(foo)).to render(partial: 'partial_x') 在视图中,我调用(使用Slim): 我的测试应该是什么样的?我试过这样的方法: def display_my

假设我想根据控制器中的实例变量呈现不同的部分。我将逻辑放在一个助手方法中,该方法类似于:

def display_my_partial(foo)
  foo == bar ? render(partial_x) : render(partial_y)
end
expect(display_my_partial(foo)).to render(partial: 'partial_x')
在视图中,我调用(使用Slim):

我的测试应该是什么样的?我试过这样的方法:

def display_my_partial(foo)
  foo == bar ? render(partial_x) : render(partial_y)
end
expect(display_my_partial(foo)).to render(partial: 'partial_x')
但是得到:

NoMethodError:
       undefined method `matches?' for #<ActiveSupport::SafeBuffer:0x007ffb490aba80>
命名错误:
未定义的方法'matches'#
我的示例有点复杂,因为我的分部位于嵌套的命名空间中。我不得不用usind
render'partial_x'
vs
render partial:'namespace/model/partial_x'
进行一些实验,以使其在规范中工作,但最后我遇到了上述错误


那么您将如何测试它呢?

您在哪里测试它?确保已调用渲染视图

在任何情况下,你真的关心它的渲染部分吗?如果文件名更改了,或者您决定改为使用html帮助程序来更改实现,该怎么办。所有这些都与输出无关。我个人会主张输出。根据输出的复杂程度,可以在视图测试或简单的单元测试中完成


HTH,

为什么不测试partial而不是controller helper的内容?因为我不知道在helper规范中测试视图是否是一种好的做法。我正在model_helpers_spec.rb中测试它,所以
render_views
将不起作用。这就是问题所在——它不在控制器的上下文中,这就是为什么我发现很难确定如何测试它。我没有,我跳过了这个测试。