Rails 4-модульный тест не удалось создать объект модели
Я хочу провести модульное тестирование приложения с использованием shoulda.
В тесте, который я делаю
User.create!(name: "James")
Когда я запускаю тест, я получаю следующую ошибку:
ActiveRecord::StatementInvalid: Mysql2::Error: Field 'name' doesn't have a default value: INSERT INTO `users` (`created_at`, `updated_at`, `id`) VALUES ('2014-04-07 12:03:07', '2014-04-07 12:03:07', 980190962)
Имеет ли это какое-то отношение к сильным параметрам rails 4?
Как я могу это решить?
3 ответа:
Проверьте, есть ли у вас недействительные светильники, лежащие вокруг. Попробуйте удалить / исправить
test/fixtures/users.yml
Примечание: Вы должны получить полные стоп-треки в модульных тестах, отключив глушители backtrace в
config/initializers/backtrace_silencers.rb
.
Имеет ли это какое-то отношение к сильным параметрам rails 4?
НЕТ, Сильные параметры не имеют к этому никакого отношения, потому что вы создаете свой объект непосредственно из хэша, а не из любого ActionController::Parameters.
Проблема исходит откуда-то еще (вероятно, из вашей базы данных).
Как я вижу из этой статьи , решением вашей проблемы может быть миграция вашего поля следующим образом:
change_column :users, :name, :string, :limit => 255, :null => false, :default => ''
Я получил аналогичную проблему во время выполнения модульных тестов. Это может произойти, если ваше соединение с БД mysql находится в строгом режиме. Отключите строгий режим, добавив параметр в базу данных.yml, как показано ниже, и попробуйте.
test: database: host: localhost name: test_db username: username password: password strict: false