我正在参与一个项目,该项目广泛使用 Presenter 模式。
我没有看到它的好处,因为 Presenter 类的所有方法都是微不足道的,就像这样:
class Checkout::NewPresenter
def initialize(customer, order)
@customer, @order = customer, order
end
def customer
@customer
end
def order
@order
end
end
伙计们在跟我说,这种模式使控制器的测试更加简单。我们从控制器的逻辑中抽象出来,只需要在某些返回值上测试演示者对象。
但是,这种效果可以通过检查控制器的实例变量来实现,而不需要任何表示层。
我已经准备好简化您的 Ruby on Rails 代码:Presenter 模式、单元格插件,并且仅同意第一种情况:
您的视图中有一些逻辑,它广泛使用您的模型。在其他视图中没有任何地方具有这样的逻辑。经典的建议是将此代码移动到模型中,但不久之后,您的模型就会因愚蠢的一次性辅助方法而变得臃肿。解决方案:模式演示者。
我不明白第二种情况。
您的构造函数包含大量代码,用于从数据库或其他存储中检索视图的某些值。你有很多fragment_exist?调用以确保当相应的片段已在缓存中时不会加载任何数据。由于它的大小,很难测试一个特定的动作。解决方案:模式演示者。
同样,在控制器测试中,我们只检查实例变量。他们在这里的意思
主要问题是 - Presenter 模式对控制器测试有什么好处?