0

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

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>

我的例子有点复杂,因为我的部分是在一个嵌套的命名空间中。我不得不对 usind render 'partial_x'vsrender partial: 'namespace/model/partial_x'进行一些试验才能让它在规范中工作,但最后我得到了上面提到的错误。

那么你将如何测试呢?

4

1 回答 1

1

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

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

高温下,

于 2014-11-18T11:43:53.347 回答