Как определить, вызвал ли экземпляр CarQuery метод с определенным параметром?(Я предполагаю, что это моя проблема, но, пожалуйста, скажите мне, если я ошибаюсь).
Есть ли лучший способ проверить это?
Ошибка
Search#base_filters should call with_limit method on query_object when user_id is passed in
Failure/Error: expect(qbase).to have_received(:with_user_id).with(1)
(Double "CarQuery").with_user_id(1)
expected: 1 time with arguments: (1)
received: 0 times
Поисковый запрос
class Search
def self.call(current_user, params)
new(current_user, params).call
end
def initialize(current_user, params)
@params = params
@current_user = current_user
end
def call
base_filters(CarQuery.new(@current_user)).relation
end
private
def base_filters(query_object)
query_object.with_user_id(@params[:user_id]) if @params[:user_id].present?
query_object
end
end
Rspec Test
RSpec.describe Search, type: :model do
describe "#base_filters" do
it "should call with_limit method on query_object when user_id is passed in" do
current_user = create(:user)
qbase =spy('CarQuery')
expect(qbase).to have_received(:with_user_id).with(1)
Search.call(current_user, {user_id: 1})
end
end
end