在辅助程序中使用实例变量是否不好?

问题描述 投票:1回答:1

我一直在重构一个旧项目,由于助手内部存在实例变量,因此我看到一些助手方法很难测试。

实现此目标的最佳做法是什么?将这些实例变量作为参数传递给助手...

在测试中,我可以做这样的事情,但是看起来很奇怪

  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'

谢谢

ruby-on-rails view-helpers
1个回答
0
投票
这也使阅读,测试和修复控制器和视图的错误变得困难。

关注点和责任的分离是要考虑的事情。让这些对长期项目有帮助。

© www.soinside.com 2019 - 2024. All rights reserved.