我想使用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强参数有关吗?
我该如何解决这个问题?
答案 0 :(得分:3)
检查周围是否有无效的固定装置。尝试删除/修复test/fixtures/users.yml
注意:您应该通过在config/initializers/backtrace_silencers.rb
中禁用回溯消音器来获得单元测试中的完整堆栈跟踪。
答案 1 :(得分:0)
这与rails 4强参数有关吗?
不,强参数与此无关,因为您是直接从哈希创建对象而不是从任何ActionController :: Parameters创建对象。
问题来自其他地方(可能是您的数据库)。
正如我在article中看到的那样,您的问题的解决方案可能是迁移您的字段:
change_column :users, :name, :string, :limit => 255, :null => false, :default => ''
答案 2 :(得分:0)
我在运行单元测试时遇到了类似的问题。如果您的mysql数据库连接处于严格模式,可能会发生这种情况。通过在database.yml中添加如下设置来禁用严格模式并尝试。
test:
database:
host: localhost
name: test_db
username: username
password: password
strict: false