簡體   English   中英

如何測試視圖助手呈現局部視圖?

[英]How to test that a view helper renders a partial?

說我想根據控制器的實例變量渲染不同的局部。 我將邏輯放在輔助方法中,如下所示:

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' VS render partial: 'namespace/model/partial_x'得到它的規范工作,但最后我得到了上述的錯誤。

那么您將如何測試呢?

您在哪里進行測試? 確保調用render_views。

無論如何,您是否真的在乎它呈現了那部分? 如果更改了文件名,或者您決定使用html helper更改實現,該怎么辦。 這與輸出無關。 我個人將斷言輸出。 根據輸出的復雜程度,您可以在視圖測試或簡單的單元測試中進行輸出。

HTH,

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM