Rspec: ошибка при тестировании приватного метода - PullRequest
0 голосов
/ 07 октября 2018

Получение ошибки при тестировании частного метода.Подскажите, пожалуйста, как проверить, что закрытый метод вызывается из открытого метода.

Public

def public_method
    private_method
end

Private

  def private_method
    tries = 0
    begin
      raise Product::StaleObjectError.new("Product is changed while you were editing") if stale_object?
      // Do some work
      raise Exception.new("Total amount used is greater than approved") if total_approved < 0

      // Save Product
    rescue Product::StaleObjectError => e
      if tries < MAX_RETRIES
        tries += 1
        sleep(1 + tries)
        reload
        retry
      else
        raise Product::StaleObjectError("Product is changed while you were editing")
      end
    end
    attributes
  end

Контрольный пример:

  before(:each) do
    @prod_v1 = Product.new
  end
  it 'test private method called' do
    expect_any_instance_of {Product}.to receive(:private_method)
    @prod_v1.public_method
  end

Я получаю следующую ошибку для контрольного примера

  Failure/Error: expect_any_instance_of {Product}.to receive(:)
     ArgumentError:
       wrong number of arguments (0 for 1)

1 Ответ

0 голосов
/ 07 октября 2018

В соответствии с документацией для Outlook_any_instance_of , он получит класс в качестве аргумента метода, поэтому вы должны использовать круглые скобки вместо фигурных скобок:

it 'test private method called' do
  expect_any_instance_of(Product).to receive(:private_method)
  ...
end
...