/ / RSpec - Проверете дали е бил наречен метод - рубин на релси, рубин, rspec

RSpec - Проверете дали е бил наречен метод - рубин на релси, рубин, rspec

Моята цел е да напиша test rspec, който проверява дали е бил извикан методът.

notify(result) if notification_allowed?(result)

И двете съобщения_отбелязани? и уведомяват са частни методи. По-точно имам нужда от тест, който проверява дали е бил извикан методът за уведомяване. Опитах се да направя нещо по-долу, но не изглежда да е прав.

subject { described_class.new }

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

Отговори:

2 за отговор № 1

повикване 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