2012-06-27 20 views
6

Belirli bir Mongoid sorgusunun kayıdının yüklenmeyeceği RSpec kullanarak, yalnızca kayıt olup olmadığını kontrol etmeyi deniyorum, çünkü kayıt büyük (birkaç MB) ve kodun yalnızca bilinmesi gerekir veya kayıt mevcut değil.Mongoid'in üreteceği sorgu türünü nasıl test edebilirim?

Ben dernekler üzerinde .exists? ile oynuyoruz ama has_one gibi çalışmak için görünmüyor nedense:

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? vekil yöntemi görünüşte has_one ilişkiler için çalışmaz; has_many için belgelenmiş olmasına rağmen. Kendi kendime zanaat vermek istiyorum, ama RSpec'de test edilmem gerekiyor, gerçekten de kayıt sadece yüklenmemiş. .to_sql ile yapabildiğiniz gibi Mongo sürücüsüne oluşturulan sorguyu test etmek gibi bir şey yapmayı düşünüyorum. Uygun bir Mongoid yöntemi var mı?

+0

Muhtemelen, bir BSON yanıtının bir belgeye dönüştürülmesini işleyen Mongoid'in parçasını kestirmek isteyeceksiniz, daha sonra çağrılmadığından emin olun. –

+0

Benim için bir kod snippet'i var mı? Arel'da .to_sql ile benzer bir şey umduğumu umuyordum. Eminim Moped’in derinliklerinde bir yerde vardır. –

+0

Mongoid/Moped'i bilmiyorum, maalesef (MongoMapper'ı koruyorum). Bir to_sql eşdeğeri istiyorsanız, belgeye dönüştürülmeden önce "Mongoid :: Criteria" öğesine bakmak isteyeceksiniz. Kriterler aslında bir sorgu olarak çalıştırılmadan önce ellerinizi ele geçirecektir. –

cevap

0
profile.chart.nil?  

çalışmıyor?

+0

Bu, nesnenin yüklenmediği bir test vakası yazmamda bana nasıl yardımcı olur? –

İlgili konular