2015-05-15 24 views
6

Ho un ambito che applico a un oggetto Mongoid in rails che funziona alla grande durante lo sviluppo, ma non durante l'esecuzione di test. In realtà non funziona affatto nei test. Questo è un documento incorporato.rspec Lo scope mutoide funziona nello sviluppo non nei test

Il genitore:

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 

Il bambino incorporato:

class Appointment 
    include Mongoid::Document 
    embedded_in :person 
end 

Quando eseguo test contro il mio modello restituisce persone se hanno gli appuntamenti o meno. Se eseguo lo stesso dal mio controller in fase di sviluppo rispetto al database, filtra le persone con appuntamenti vuoti.

Cosa mi manca?

Prima mi chiede di cambiare la configurazione del database -

  1. Non ho il controllo sulla struttura dei dati
  2. Si supponga che non hanno nemmeno accesso in scrittura al database
+0

si può aggiungere snippet del codice di test e di sviluppo? compresa la configurazione – Gashaw

+0

C'è qualcosa in particolare a cui sei interessato? Il codice di test e sviluppo più tutta l'installazione sarebbe sicuramente un enorme muro di codice, quindi forse c'è qualcosa di più specifico? –

+0

Vorrei mettere in pausa il test usando Pry e ispezionare il database. Assicurarsi che i record siano effettivamente persistenti? Confronta i record all'interno di ogni raccolta per vedere se sono gli stessi che ti aspetti. Alcuni dei codici sorgente di test potrebbero aiutare. –

risposta

0

Controllare il vostro Gemfile, scommetto Mongoid è impostato per essere eseguito solo in fase di sviluppo:

Provare a cambiare questa

gem 'mongoid', group: :development 

a questo

gem 'mongoid'