Ответ 1
Stripe:: CardError требует 3..6 аргументов в следующем исходном коде:
class CardError < StripeError
...
def initialize(message, param, code, http_status=nil, http_body=nil, json_body=nil)
Здесь ключевая документация из документа RSpec в github:
expect(double).to receive(:msg).and_raise(error)
#error can be an instantiated object or a class
#if it is a class, it must be instantiable with no args
Поскольку вы просто предоставляете класс, а класс требует аргументов, он не работает. Вам необходимо создать его экземпляр (т.е. Через new
) и предоставить аргументы.
Полное определение находится в https://github.com/stripe/stripe-ruby/blob/0c281891948a793e79cc997d31918ba7f987f7ae/lib/stripe/errors/card_error.rb