Тестировать нестатические методы в Rspec? - PullRequest
2 голосов
/ 05 февраля 2011

Можно ли проверить, какие аргументы передаются нестатическому методу при тестировании с помощью rspec?

Если я для ie хочу проверить класс A, то внутри класса A я вызываю класс B, B ужеиспытания.Единственное, что я хочу проверить, это входящие аргументы для B.

class A
  def method
    number = 10
    b = B.new
    b.calling(number)
  end
end

class B
  def calling(argument)
    # This code in this class is already testet
  end
end

Как мне проверить входящие аргументы для b.calling?

Я пробовал это до сих пор, безуспех.

it "should work" do
  b = mock(B)
  b.should_receive(:calling).at_least(1).times
  A.new.method
end

Он всегда терпит неудачу, потому что b никогда не вызывался.

1 Ответ

4 голосов
/ 05 февраля 2011

b в вашей спецификации не является экземпляром b A (он возвращает реальный экземпляр B, когда вы вызываете new, поскольку вы его не заглушили), попробуйте следующее:

it "should work" do
  b = mock(B)
  B.should_receive(:new).and_return(b)
  b.should_receive(:calling).at_least(1).times
  A.new.method
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...