Rails / RSpec — Как писать тесты rspec для обработчиков?

#ruby-on-rails #rspec

#ruby-на-рельсах #rspec

Вопрос:

У меня есть обработчик, который отвечает за создание новой записи в базе данных.Он берет параметры из запросов POST и добавляет новую запись в базу данных.Этот помощник определен ниже:

 module Vehicles
   module Handlers
      class AddVehicle
        def initialize(vehicle_params)
          @vehicle_info = vehicle_params
        end
    
        def call 
          create_vehicle
        end
    
        private
    
        def create_vehicle
          Vehicle.create!(@vehicle_info)
        end
      end
    end
end
 

Я хотел бы проверить, правильно ли работают методы этого класса, но без отправки запроса POST.Поэтому мне не нужно создавать данные с помощью factory_bot, а просто помещать аргументы при вызове метода. У вас есть идея, как проверить это поведение?

Ответ №1:

Обработчик — это класс, поэтому просто нужно сделать что-то вроде этого…

 h = Vehicle::Handlers::AddVehicle.new(vehicle_params)
 

чтобы получить экземпляр обработчика. Затем вы можете тестировать, как и любой другой класс. Например…

 vehicle = h.call
refute_nil vehicle