gpt4 book ai didi

ruby-on-rails - 如何从 Controller 外部访问Rails Controller View 上下文?

转载 作者:行者123 更新时间:2023-12-03 16:40:41 25 4
gpt4 key购买 nike

我正在通过创建“纯旧的Ruby” presenter对象来清理一些依赖于某些自定义 Controller 帮助器方法的代码。在我的 Controller 中,我能够将 View 上下文传递给该类:

def show
# old code: view_context.bad_helper_method
@foobar = FoobarPresenter.new(Foobar.find(params[:id]), view_context)
end

class FoobarPresenter
def initialize(model, view_context)
@model = model
@view_context = view_context
end

def something
@view_context.bad_helper_method
end
end

但是,我不确定要通过什么考试。我宁愿动态拉出helper/view_context,这样我就不必传递它。

如何在 Controller 外部访问 View / Controller 帮助器上下文?

这是一个Rails 3.2项目。

最佳答案

如何测试期望值?

  • 测试 Controller (请注意,假设我们正在使用subject进行测试,则rspec-rails是 Controller 的实例):
    view_context     = double("View context")
    foobar_presenter = double("FoobarPresenter")

    allow(subject).to receive(:view_context).and_return(view_context)
    allow(FoobarPresenter).to receive(:new).with(1, view_context).and_return(foobar_presenter)

    get :show, id: 1

    expect(assigns(:foobar)).to eql(foobar_presenter)
  • 测试演示者:
    view_context = double('View context', bad_helper_method: 'some_expected_result')
    presenter = FoobarPresenter.new(double('Model'), view_context)

    expect(presenter.something).to eql('some_expected_result')
  • 关于ruby-on-rails - 如何从 Controller 外部访问Rails Controller View 上下文?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27870616/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com