RSpecのバージョンを2.12に更新すると、and_call_original
メソッドにアクセスできるようになります(ドキュメントとユースケースを参照してください)。execute
そのメソッドを使用して、のメソッドをスタブActiveRecord::Base.connection
し、元のメソッドを呼び出してから、必要な期待値を追加することができます。
ActiveRecord::Base.connection.stub(:execute).and_call_original
ActiveRecord::Base.connection.should_receive(:execute).with(:s1)
ActiveRecord::Base.connection.should_receive(:execute).with(:s2)
何らかの理由で最新バージョンのRSpecを使用していない(または使用したくない)場合は、次の方法で同じ機能を実現できます。
execute = ActiveRecord::Base.connection.method(:execute)
ActiveRecord::Base.connection.should_receive(:execute).with(:s1)
ActiveRecord::Base.connection.should_receive(:execute).with(:s2)
ActiveRecord::Base.connection.stub(:execute) { |*args| execute.call(*args) }
参照: