Как правильно протестировать создание объектов в сервисе в Rails - PullRequest
0 голосов
/ 07 ноября 2019

У меня есть сервисный метод, который извлекает информацию из API и возвращает список полей. Если поле или тип имени животного не существует, то оно создается;

class AnimalInfoService < ActiveJob::Base
  before_enqueue :mark_as_pending
  around_perform :handle_sync_error_state

 def perform(raw_animal_data)
    .....
  animal_data = get_animal_data(raw_animal_data)
 end

def get_animal_data(raw_animal_data)
  animal_name = Animal.find_or_create_by(name: raw_animal_data[:name])
  animal_type = AnimalType.find_or_create_by(name: raw_animal_data[:animal_type], animal: animal_name)
  tailored_animal_data.merge(
      name:animal_name,
      type:animal_type
  )
end 

Мой вопрос: как правильно проверить это? У меня ниже есть некоторый псевдокод, и мне было интересно, если кто-нибудь может дать мне знать, если это правильное направление:

test "should create new animal name" do

  current_animals = Animal.count //<-- not sure how to call this method
  mock = MiniTest::Mock.new
  mock.expect(:call, nil, [{
     :name => "Whale",
     :type => "Fish",
     :location => "Ocean",
  }, "API", Integer])

  SyncPropertyJob.stub(:perform_later, mock) do
    @syncer.sync
  end

  updated_number_of_animals = Animal.count
  assert(updated_number_of_animals>current_animals)

end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...