だから私はこの単純なルビークラスを持っています:
class GetRequestList
def initialize(current_user, filter_hash)
@authorizer = RequestAuthorizer.new(current_user)
@filter = RequestFilter.new(filter_hash)
end
def generate
Request.send_chain(@authorizer.method_chain)
.send_chain(@filter.method_chain)
end
end
そして、実装の分離でRequest
2つのメソッドを受け取ることをテストしたいと思います。そのために、いくつかのスタブを使用しようとしています:send_chain
RequestAuthorizer
RequestFilter
require 'test_helper'
class GetRequestListTest < ActiveSupport::TestCase
test "request should be filtered by filter and role" do
Request.expects(:send_chain).twice.returns([build(:request)])
RequestFilter.stubs(:new)
RequestFilter.any_instance.stubs(:method_chain).returns([])
RequestAuthorizer.stubs(:new)
RequestAuthorizer.any_instance.stubs(:method_chain).returns([])
assert GetRequestList.new(:current_user, :filter).generate.size == 1
end
end
何が間違っているかがわかります。stubs(:new)
が返され、インスタンス変数のnil
インスタンスがなく、エラーが発生します。インスタンス変数でメソッドをスタブ化する方法がわかりません。助言がありますか?RequestAuthorizer
RequestFilter
GetRequestList