2016-01-23 5 views
0

Светильники при использовании Rails (Моя среда Rails 4.2)Рубин на Rails 4 светильники требуют таблицы

Почему при выполнении теста, почему это ошибка, когда приспособление существует, но не существует таблица с таким же именем? И почему у прибора есть соответствующий столбец в таблице?

Пример 1: (таблица не существует)

  • создать арматуру joes.yml (Джос таблица не существует)
  • Выполнить тест грабель: интеграция
  • Ошибку вы» LL получаете:

ActiveRecord :: StatementInvalid: SQLite3 :: SQLException: нет такой таблицы: Джос: УДАЛИТЬ ИЗ "Джос"

Пример 2: (таблица существует, но столбец не)

  • создать приспособление products.yml. В этом случае таблица Products существует
  • добавить yml-блок с именем столбца, который у вас нет в таблице продуктов. Пример добавить запись другое: бла в products.yml файле
  • Выполнить тест грабли: интеграция

ActiveRecord :: Крепеж :: FixtureError: таблица «продукты» не имеет столбец с именем «другой» ,

Я думал, что могу использовать светильники в качестве общего места для ссылок в своих тестах, но не должен соответствовать моей БД.

ответ

2

Светильники - это ваши данные, им по-прежнему нужно место!

«Светильники позволяют заполнять вашу тестовую базу данных предопределенными данными до запуска ваших тестов. Светильники независимы от базы данных, написанные в YAML. В каждой модели есть один файл».

http://guides.rubyonrails.org/testing.html#the-low-down-on-fixtures

Они не являются своего рода замена памяти для базы данных тестирования, они просто позволяют предварительно заполнить тестовую базу данных со значениями, так что вы можете проверить более удобно, без того, чтобы положить много данные при настройке тестового прогона. Это все.

+1

Если я захотел протестировать создание пользователя. то проверка правильности информации пользователя, есть ли место для размещения этой информации вне жесткого кодирования в каждом тесте? – user8745303

+0

Хорошо - лично я использую FactoryGirl для такого рода вещей https://github.com/thoughtbot/factory_girl, но с чем-то вроде светильников, у меня бы был мой пользовательский тест, который создавал бы user1 - длинный путь, вручную тест и создать отдельный user2 в моих светильниках, который доступен для всех моих других тестов. – Tim