2015-05-15 8 views
6

Ich habe einen Bereich, den ich auf ein Mongoid-Objekt in Schienen anwenden, die in der Entwicklung gut funktioniert, aber nicht, wenn Tests ausgeführt werden. Es funktioniert überhaupt nicht in Tests. Dies ist ein eingebettetes Dokument.rspec Mongoid Scope funktioniert in der Entwicklung nicht in Tests

Die Mutter:

class Person 
    include Mongoid::Document 
    def self.with_appointments 
    where(:appointments.not => { '$size' => 0 }) 
    end 
    embeds_many :appointments, store_as: 'Appointments', class_name: 'Appointment' 
end 

Das eingebettete Kind:

class Appointment 
    include Mongoid::Document 
    embedded_in :person 
end 

Als ich Tests gegen mein Modell führen Sie es zurück Personen, ob sie Termine oder nicht. Wenn ich dasselbe von meinem Controller in der Entwicklung gegen die Datenbank laufe, filtert es Leute mit leeren Terminen heraus.

Was fehlt mir?

Bevor mich zu fragen, um die Datenbank-Setup zu ändern -

  1. Ich habe keine Kontrolle über die Datenstruktur
  2. Angenommen ich auch keinen Schreibzugriff auf die Datenbank
+0

Können Sie Schnipsel Ihres Test & Entwicklung Code hinzufügen? inklusive Setup – Gashaw

+0

Gibt es etwas besonderes, an dem Sie interessiert sind? Test- und Entwicklungscode sowie das gesamte Setup wären definitiv eine riesige Codewand, vielleicht gibt es etwas Spezifischeres? –

+0

Ich würde den Test mit Pry anhalten und die Datenbank überprüfen. Stellen Sie sicher, dass die Datensätze tatsächlich beibehalten werden? Vergleichen Sie die Datensätze in den einzelnen Sammlungen, um festzustellen, ob sie den erwarteten Ergebnissen entsprechen. Ein Teil des Testquellcodes würde helfen. –

Antwort

0

überprüfen Ihr GemFile, ich wette, Mongoid wird nur in der Entwicklung ausgeführt:

Versuchen Sie, diese

zu wechseln
gem 'mongoid', group: :development 

diesen

gem 'mongoid' 
Verwandte Themen