RSpec:如何测试init方法

时间:2017-04-22 13:36:57

标签: rspec

我想测试在初始化类的新实例时是否调用某个方法。在我的项目中,我有以下代码:

class Journey
  def initialize(entry_station)
    @journey_complete = false
    @entry_station = entry_station
    self.start_journey
  end

  def start_journey
    ...
  end
end

我想写一个RSpec测试,在初始化时检查所有新旅程实例上的start_journey。通常,为了检查方法是否已运行,我expect一个对象来接收某个消息,然后运行我希望发送它的代码。 e.g。

expect(journey).to receive(:start_journey)
Journey.new(station)

我不能在这里做到这一点,因为我要测试的旅程实例在第二行运行代码之前不存在。 RSpec是否有一个解决方案来测试init方法?

1 个答案:

答案 0 :(得分:1)

您正在搜索它:

expect_any_instance_of(Journey).to receive(:start_journey)

https://github.com/rspec/rspec-mocks#settings-mocks-or-stubs-on-any-instance-of-a-class