8

BDD で、ActiveRecord::Base.find メソッドの :include パラメータが欠落していることを発見したいと考えています。したがって、私の考えは、仕様に次のようなものを含めることです。

ActiveRecord::Base.should_receive(:find).once.and_proxy_to_original_method
parent = SomeClass.find 34
parent.child.should be_loaded
parent.other_children.should be_loaded

#child または #other_children アソシエーションが熱心にロードされていない場合、期待は次のようなもので失敗するはずです: ...」

このように機能するマッチャーがあるかどうか、またはこれを作成する方法を知っている人はいますか。

ありがとう

4

1 に答える 1

5

ここでも同じ問題があったと思います。あなたの特定のケースでは、私はこれを行いますが、これは非常にきれいだと思います。

original_method = ActiveRecord::Base.method(:find)
ActiveRecord::Base.should_receive(:find).once do (*args)
  original_method.call(*args)
end

メソッドを含めるように RspecMocks::MessageExpectationクラスを拡張できると思いますが、and_proxy_to_original_methodそれほど難しくはないはずですが、私は見ていません。

于 2011-08-29T15:49:53.813 に答える