2015-03-19 22 views
16

Uczę się Ruby on Rails, i chciałbym się upewnić, że rozumiem różnicę między urządzeniami i danymi o nasionach.Oprawa szynowa kontra nasiona

Rozumiem, że urządzenia są w zasadzie danymi testowymi, na których wykonywane są testy asercji i nie mają trwałości zaraz po zakończeniu testów, podczas gdy nasiona są automatycznie umieszczane w bazie danych, gdy wykona się coś w rodzaju rake db:seed.

Dlaczego warto używać nasion w tym przypadku? Tylko po to, aby uniknąć konieczności spisywania wszystkich niezliczonych twierdzeń dotyczących testowania? Czy dane, które znasz, będą musiały znajdować się w bazie danych po uruchomieniu aplikacji?

(Chyba, dane statyczne, które zawsze były tam jak pierwszy admin na forum o?)

Odpowiedz

6

Wiele aplikacji trzeba niektóre dane prostu działał poprawnie. Na przykład listę krajów i kodów pocztowych. Lub listę potencjalnych ról dla użytkowników, nawet jeśli nie ma jeszcze użytkowników w bazie danych.

Pomyśl o danych źródłowych pod kątem tego, co byłoby potrzebne do uruchomienia i uruchomienia środowiska programistycznego. Generalnie, na nowy Rails developer do pracy w dowolnej aplikacji, proces ten powinien zawsze iść tak:

  1. sklonować repo
  2. Install kamienie poprzez Bundler
  3. Tworzenie i nasienie bazy danych rozwoju i badań
  4. Przeprowadź testy, które powinny przechodzić
+1

Nie rozstawaj testowych baz danych. – maletor

+0

https://stackoverflow.com/a/25819011/1949363 to kolejna zwięzła odpowiedź pod tym samym tytułem. – srt32

11

Masz rację. Dane źródłowe to zapełnianie bazy danych wymaganymi danymi wstępnymi, aby aplikacja była użyteczna od samego początku, np. Dodanie domyślnego konta administratora, które jest wymagane do uruchomienia aplikacji od początku.

Dane dotyczące nasion nie powinny być używane do celów testowych, podczas gdy w przypadku testowania należy zawsze upewnić się, że baza danych jest czysta, aby użytkownik wiedział, że jedynymi danymi używanymi przez przykład są dane wypełnione przez przykład, z którego nie pochodzi na zewnątrz, pozwala to uniknąć zamieszania.

urządzenia to jeden ze sposobów robienia tego. ale lepszym sposobem jest użycie fabryk, takich jak factory girl, sprawdź to railscast episode, aby uzyskać lepsze wyjaśnienie.

+0

Dobra odpowiedź, z tym, że nie zlekceważyłem tak szybko urządzeń. Najnowsze wersje działają dobrze. Najpierw wypróbuj urządzenia. Jeśli nie robią tego, co chcesz, poszukaj alternatyw, takich jak fabryka. – ReggieB

+0

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