0
私は間違ったことを理解したようです。私はクラススタブ付きメソッドが呼び出されないのはなぜですか?
RSPECにspeccedさmodule Spree
class OmnikassaPaymentResponse
#...
# Finds a payment with provided parameters trough ActiveRecord.
def payment(state = :processing)
Spree::Payment.find(:first, :conditions => { :amount => @amount, :order_id => @order_id, :state => state }) || raise(ActiveRecord::RecordNotFound)
end
end
end
を持っている:
describe "#payment" do
it 'should try to find a Spree::Payment' do
Spree::Payment.any_instance.stub(:find).and_return(Spree::Payment.new)
Spree::Payment.any_instance.should_receive(:find)
Spree::OmnikassaPaymentResponse.new(@seal, @data).payment
end
end
これは、しかし、常にActiveRecord::RecordNotFound
をスローします。私はany_instance.stub(:find).and_return()
を期待していましたが、いつでもどこでも、私はSpree :: Paymentの何らかのインスタンスで#find
と呼んでいますが、何かを返します。
言い換えれば、stub.and_return
が|| raise(ActiveRecord::RecordNotFound)
になるのを避けると思います。しかし、それはしません。
私の前提は間違っていますか?他に何か?
私よりも速い! ;) – lucapette
ありがとう! FWIW: '.should_receive(:find)'も 'any_instance'なしで呼び出さなければなりません。 – berkes
@berkes、はい、そうです。 –