Проверьте метод вложенного класса в Rspec - PullRequest
0 голосов
/ 15 февраля 2020

Есть ли способ проверить существование метода класса, вызываемого из другого метода класса?

class AnimalRecord < ApplicationRecord
  COLLAR_ID = AnimalCollar::ID
  belongs_to :animal
  serialize :json, JSON
  scope :collar_id, -> { for_collar(COLLAR_ID) }

  def self.current_record(animal)
    animal_info = AnimalRecord.collar_id.first
    calculate_nutrients(animal_info)
  end

  def self.calculate_nutrients(animal)
    code result
  end
end

Я могу проверить метод current_record из current_record. Но как правильно проверить метод calculate_nutrients?

У меня было это:

context "test record" do
  before do
    @animal = create(:animal... )
    @animal_record = create(:animal_record...)
  end

  it "calls #calculate_nutrients" do 
    expected_response = responseHere
    expect(AnimalRecord).to receive(:calculate_nutrients).and_return(expected_response)

    AnimalRecord.current_record(@animal)
  end

Но я получаю сообщение об ошибке:

    expected: 1 time with any arguments
       received: 0 times with any arguments

1 Ответ

1 голос
/ 15 февраля 2020

Я думаю, вы удалили строку expect(AnimalRecord).to receive(:event) из тестового примера. Кажется, на AnimalRecord такой метод не определен, но вы пытаетесь его "ожидать".

...