我试图使用Rspec来存储Stripe API,而且我遇到了一个问题.这是我的代码如下:
Stripe::Customer.should_receive(:create).with(any_args).and_raise(Stripe::CardError)
这是我得到的错误:
Failure/Error: Stripe::Customer.should_receive(:create).with(any_args).and_raise(Stripe::CardError) ArgumentError: wrong number of arguments (0 for 3..6)
解决方法
Stripe :: CardError需要3..6个参数,根据以下源代码:
class CardError < StripeError ... def initialize(message,param,code,http_status=nil,http_body=nil,json_body=nil)
以下是github中的RSpec文档的关键文档:
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
由于你只是提供类,而类需要参数,所以它是失败的.您需要实例化(即通过新的)并提供参数.