RSpecを使用して、特定のMongoidクエリがでないことをアサートしようとしていますがレコードを読み込み、レコードが大きい(数MB)ためにその存在をチェックするだけです。レコードは存在しません。Mongoidが生成するクエリの種類をテストするにはどうすればよいですか?
私は団体の.exists?
でプレーしてきたが、has_one
ように動作するようには思えない何らかの理由:
class Profile
include Mongoid::Document
has_one :chart
end
class Chart # this is heavy
include Mongoid::Document
belongs_to :profile
end
profile.chart.exists? # fails if chart returns nil
がexists?
プロキシメソッドが明らかにhas_one
関係のために動作しません。それはhas_many
について文書化されています。私は自分で工作したいと思っていますが、私はRSpecで実際にレコードに読み込まれていないかどうかだけ調べる必要があります。 .to_sql
と同じように、Mongoドライバに生成される基本クエリのテストのようなことをすることを考えています。対応するモンゴイド法はありますか?
BSONレスポンスの変換を扱うMongoidの部分をドキュメントにスタブして、それが呼び出されていないことを確認してください。 –
私のためのコードスニペットがありますか? Arelの.to_sqlに類似したものをもっと期待していました。私はそれがモペットのどこかにあると確信しています。 –
私はMongoid/Mopedについてよく分かりませんが、残念ながら(私はMongoMapperを維持しています)。 to_sqlを同等にするには、文書に変換する前に 'Mongoid :: Criteria'を見たいと思うでしょう。そのトリックは、基準が実際にクエリとして実行される前に手をつけています。 –