我使用提交者类来清理我在Rails中的视图。现在我正在尝试为这些类编写单元测试,但它们本身并不受RSpec的支持,因为它们是PORO的。
他们看起来像:
class AccountPresentor < ExtendedSimpleDelegator
alias_method :account, :__getobj__
def name_link
@view.link_to name, account
end
end
我写了这样的单元测试:
require "rails_helper"
describe AccountPresentor do
let(:account) { create(:account) }
let(:user) { create(:user) }
let(:presentor) { AccountPresentor.new(account, user, ActionController::Base.new.view_context)}
describe "displays name link" do
subject { presentor.name_link }
it { is_expected.to include account_path(account) }
end
end
AccountPresentor
类的第三个参数应该是视图上下文。我发现直接在ActionController类上调用它似乎首先起作用,但在调用link_to
等辅助方法时会出现一些问题
这会导致以下错误:
ArgumentError:
arguments passed to url_for can't be handled. Please require routes or provide your own implementation
知道如何解决这个问题吗?