我一直在重构一个旧项目,由于助手内部存在实例变量,因此我看到一些助手方法很难测试。
实现此目标的最佳做法是什么?将这些实例变量作为参数传递给助手...
在测试中,我可以做这样的事情,但是看起来很奇怪
it 'returns family and categoy names' do
@category = instance_double(Category, name: 'category_name')
expect(helper.meta_description_home_products).to eq(
'blabla - categoria'
)
end
作为控制器视图和帮助器的示例:
class HomeController < BaseController
@family = ...
@category = ...
@products = ...
end
和视图中
<% @products.each ...
...
my_helper
...
和帮助者:
module ApplicationHelper
def my_helper
...
desctiption = 'blabla' if @category.name == 'blabla'
谢谢
关注点和责任的分离是要考虑的事情。让这些对长期项目有帮助。