/ / RSpec - メソッドが呼び出されたかどうかをチェックする - ruby​​-on-rails、ruby、rspec

RSpec - メソッドが呼び出されたかどうかを調べる - ruby​​-on-rails、ruby、rspec

私の目標は、メソッドが呼び出されたかどうかをチェックするrspecテストを書くことです。

notify(result) if notification_allowed?(result)

どちらもnotification_allowedですか? 通知はプライベートメソッドです。より正確には、通知メソッドが呼び出されたかどうかをチェックするテストが必要です。私は以下のようなことをしようとしたが、正しいとは思わない。

subject { described_class.new }

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

回答:

回答№1は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