RSpec - 检查方法是否被调用

时间:2016-01-29 14:31:30

标签: ruby-on-rails ruby rspec

我的目标是编写检查方法是否被调用的rspec测试。

notify(result) if notification_allowed?(result)

都是notification_allowed?和notify是私有方法。更确切地说,我需要一个检查是否已调用notify方法的测试。我尝试过像下面这样的事情,但它看起来并不正确。

subject { described_class.new }

it do
  expect(subject).to receive(:notify)
  subject.send(:notification_allowed?, true)
end

1 个答案:

答案 0 :(得分:2)

调用notification_allowed?除了返回notification_allowed?notify

无关的结果外,不会执行任何操作

您需要调用包含要测试的表达式的函数。

例如,该方法可能是......

def check_and_notify(result)
  notify(result) if notification_allowed?(result)
end

所以测试将是......

subject { described_class.new }

it 'calls notify' do
  expect(subject).to receive(:notify)
  subject.send(:check_and_notify, true)
end