2015-03-19 13 views
16

Sto imparando Ruby on Rails e mi piacerebbe solo assicurarmi di capire la differenza tra fixture e seed data.Rails fixtures vs semi

Quello che ho capito è che dispositivi sono fondamentalmente dati di test che si esegue le affermazioni di test contro, e non hanno la persistenza non appena il test sono fatti, mentre i semi si mette automaticamente nel database quando si fa qualcosa di simile rake db:seed.

Perché utilizzare i semi in questo caso? Giusto per evitare di dover scrivere tutte le innumerevoli affermazioni sui test? Per i dati che conosci devono essere nel database quando l'app viene messa in produzione?

(immagino, dati statici che sarebbero sempre stati lì come il primo amministratore su un forum?)

risposta

6

Molte applicazioni hanno bisogno di alcuni dati solo per funzionare correttamente. Ad esempio, un elenco di paesi e codici postali. Oppure, un elenco di potenziali ruoli che gli utenti possono assumere, anche se non ci sono ancora utenti nel database.

Pensate ai dati seme in termini di ciò che sarebbe necessario per ottenere un ambiente di sviluppo attivo e funzionante. In genere, per un nuovo sviluppatore Rails per lavorare su qualsiasi applicazione, il processo dovrebbe sempre andare in questo modo:

  1. Clone repo
  2. Installare le gemme tramite bundler
  3. Creare e seme dei database di sviluppo e test
  4. eseguire i test, che dovrebbe passare
+1

Non eseguire il seeding dei database di test. – maletor

+0

https://stackoverflow.com/a/25819011/1949363 è un'altra risposta succinta lungo le stesse linee – srt32

11

Hai capito bene. I dati delle sementi servono a popolare il database con i dati prerequisiti necessari per consentire all'app di essere utilizzabile fin dall'inizio, come aggiungere un account amministratore predefinito che è necessario affinché l'app sia gestibile sin dall'inizio.

dati semi non devono essere utilizzati a scopo di test, durante il test si dovrebbe sempre assicurarsi che il database è pulito in modo che si sa che gli unici dati utilizzati da un esempio sono i dati popolati da l'esempio è di per sé, non da ogni dove all'esterno, ciò consente di evitare confusione.

fixtures è un modo per farlo. ma un modo migliore è usare le fabbriche come factory girl, controllare questo railscast episode per una spiegazione migliore.

+0

Una buona risposta, a parte il fatto che non avrei scontato i proiettori così rapidamente. Le ultime versioni funzionano bene. Prova prima i dispositivi. Se non fanno quello che vuoi, allora cerca alternative come la factory girl. – ReggieB

+0

Vedere http://brandonhilkert.com/blog/7-reasons-why-im-sticking-with-minitest-and-fixtures-in-rails/ – ReggieB