Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Rails 4测试用户初始化始终为空_Ruby On Rails_Ruby_Unit Testing_Tdd - Fatal编程技术网

Ruby on rails Rails 4测试用户初始化始终为空

Ruby on rails Rails 4测试用户初始化始终为空,ruby-on-rails,ruby,unit-testing,tdd,Ruby On Rails,Ruby,Unit Testing,Tdd,嘿,我有一个像这样的测试 test 'create account' do if User.create(email: 'me@test.com', password: 'blahblah') assert true else assert User.msg end end 但当我尝试运行它时,会收到如下错误消息: 1) Error: UserTest#test_create_account: ActiveRecord::Record

嘿,我有一个像这样的测试

test 'create account' do
    if User.create(email: 'me@test.com', password: 'blahblah')
        assert true
    else
        assert User.msg
    end
end
但当我尝试运行它时,会收到如下错误消息:

  1) Error:
UserTest#test_create_account:
ActiveRecord::RecordNotUnique: PG::UniqueViolation: ERROR:  duplicate key value violates unique constraint "index_users_on_email"
DETAIL:  Key (email)=() already exists.
: INSERT INTO "users" ("created_at", "updated_at", "id") VALUES ('2013-10-16 21:59:54', '2013-10-16 21:59:54', 298486374)

在我看来,这好像我没有初始化电子邮件,但据我所知,这应该用上面的create初始化。我使用的是强参数,所以我没有启用任何attr_accessible,我可以运行它。有人知道这是什么原因吗?如果你想要更多的信息,请告诉我

这是由rails脚手架自动生成的夹具造成的。无论出于什么原因,这都会显示在测试内部,而不是它自己的部分中。当我修复设备时,这个错误不再出现

如果收到PostgreSQL唯一密钥冲突错误消息,可能是您的主键索引不同步,例如在填充数据库之后

使用
ActiveRecord::Base.connection.reset\u pk\u序列!(“用户”)

重新同步用户表的主键索引。

您的电子邮件属性肯定有唯一的验证。这是一个错误,因为me@test.com已由其他用户创建和/或保存在数据库中。如果更改电子邮件参数,是否会出现相同的错误?“如果你运行两次呢?”杰里米谢谢你的帮助!我试着改变它,即使有完全独特的东西,我也会得到同样的错误。如果你看一下SQL,它看起来像是只在创建、更新和id时被插入。try
email:“{SecureRandom.uuid}@test.com”
ahahah!我得到了它。Rails在生成脚手架时自动添加了空白夹具。无论出于何种原因,这在我的测试中显示为一个错误。(这不应该单独显示吗?)非常感谢您的帮助。这将在将来有所帮助,谢谢您的发布!嗨@lethjakman,我使用的是工厂女孩而不是固定装置,这也给了我同样的问题。有什么想法吗?嘿,我知道这有点晚了,但我觉得晚做总比不做强,对吧?仔细检查以确保factory girl不会为您生成夹具,并确保您的工厂不会在数据库端的唯一验证失败。据我所知,这两个问题可能导致这一错误。