我是rails的新手,我一直在尝试为模态创建模型测试:用户并测试字段生日(类型:日期)。
这是我的模态测试
class UserTest < ActiveSupport::TestCase
def setup
@user = User.new(firstname: "FirstName",
lastname: "LastName",
birthdate: "11.09.1980".to_date,
sex: "Frau",
username: "username",
email: "user@test.com",
password: "password")
test "Default user is valid"
assert @user.valid?
end
end
如果我运行测试,我会收到回复
ActiveRecord :: UnknownAttributeError:未知属性&#39; birthdate&#39;对于用户。 test / models / user_test.rb:5:在`setup&#39;
我现在真的很困惑。因为如果我在rails控制台中创建完全相同的用户(copy&amp; past),那么创建生日和访问或更改它就没有问题。这是我在rails console中创建用户后得到的结果
=&GT; #User id:nil,firstname:&#34; FirstName&#34;,lastname:&#34; LastName&#34;,sex:0,birthdate:&#34; 1980-09-11&#34;,用户名:& #34;用户名&#34;,电子邮件:&#34; user@test.com" ;, password_digest:&#34; $ 2a $ 10 $ T / TB ......&#34;
我将以下表格创建为迁移
create_table "users", force: :cascade do |t|
t.string "firstname"
t.string "lastname"
t.integer "sex"
t.date "birthdate"
t.string "username"
t.string "email"
t.string "password_digest"
end
任何好的想法都会受到高度赞赏。我无法让我的考试通过。
答案 0 :(得分:1)
可能你的开发数据库有生日,同时你的测试数据库没有,你可以尝试运行
rake db:test:prepare
将您当前的架构加载到测试数据库。并尝试再次运行测试
答案 1 :(得分:1)
您的测试数据库架构与开发不同步很常见。我在别名(&#39;重置测试数据库&#39;的首字母缩写词)中有这个,你可能会发现它很有用:
alias rtd='bundle exec rake db:drop db:create db:migrate RAILS_ENV=test'