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ı?
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. –
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. –
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. –