Rspe c: Как проверить метод, который вызывает ошибку - PullRequest
3 голосов
/ 27 февраля 2020

У меня есть класс SubscriptionHandler с методом вызова, который создает ожидающую подписку, пытается выставить счет пользователю, а затем выдает ошибку в случае сбоя выставления счета. Ожидающая подписка создается независимо от того, провален ли платеж с ошибкой FailedPaymentError. Есть ли способ проверить, что количество подписок увеличивается без увеличения c с FailedPaymentError.

Ответы [ 2 ]

0 голосов
/ 27 февраля 2020

Вы должны быть в состоянии использовать Rspe c составные ожидания для этого

https://relishapp.com/rspec/rspec-expectations/docs/compound-expectations

Так что я переписываю ваши ожидания в нечто вроде это:

expect { handler.call }.
 to raise_error(FailedPaymentError).
 and change { Subscription.count }.by(1)
0 голосов
/ 27 февраля 2020

Это можно сделать следующим образом

expect{ handler.call }.to raise_error FailedPaymentError

Должно работать.

Если вы вообще не хотите выдавать ошибку, вы можете удалить эту строку и вернуть действительный ответ вместо этого

allow(charger).to receive(:charge!).and_raise(FailedPaymentError)

Подробнее - Как проверить повышение исключений в Rails / RSpe c?

Официальный RSpe c документы

https://relishapp.com/rspec/rspec-expectations/v/2-0/docs/matchers/expect-error

...