【发布时间】:2014-11-18 11:09:09
【问题描述】:
假设我想根据控制器中的实例变量呈现不同的部分。我把逻辑放在一个辅助方法中,看起来像:
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>
我的例子有点复杂,因为我的部分是在一个嵌套的命名空间中。我不得不对使用 render 'partial_x' 与 render partial: 'namespace/model/partial_x' 进行一些试验,以使其符合规范,但最后我得到了上述错误。
那么你将如何测试呢?
【问题讨论】:
-
为什么不测试部分内容而不是控制器助手?
-
因为我不知道在帮助规范中测试视图是否是一个好习惯。
标签: ruby-on-rails partial view-helpers specs