加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – 使用Factory Girl时未定义的方法`stringify_ke

发布时间:2020-12-17 01:27:50 所属栏目:百科 来源:网络整理
导读:我在User_spec.rb中有以下代码块: @user = { username:'newuser',email:'new@user.com',fname:'new',lname:'user',password:'userpw',password_confirmation:'userpw'} 用于使用这些属性创建使用.然而,当我将所有这些属性移动到Factories.rb时: require 'f
我在User_spec.rb中有以下代码块:

@user = { username:'newuser',email:'new@user.com',fname:'new',lname:'user',password:'userpw',password_confirmation:'userpw'}

用于使用这些属性创建使用.然而,当我将所有这些属性移动到Factories.rb时:

require 'factory_girl'

Factory.define :user do |u|
  u.username 'newuser'
  u.email 'new@user.com'
  u.fname 'new'
  u.lname 'user' 
  u.password 'newuserpw'
  u.password_confirmation 'newuserpw'
end

并将user_spec.rb中的行替换为:

@user = Factory(:user)

所有与用户模型相关的测试都失败了(例如测试电子邮件,密码,用户名等),所有这些测试都给了我

“undefined method `stringify_keys’ for…”

新用户对象

解决方法

我有类似的问题,这是因为我将FactoryGirl对象传递给ActiveRecord创建/新方法(哎呀!).看起来你在这里做同样的事情.

您列出的第一个/顶级@user是值的哈希值,但第二个/底部@user是您的用户ojbect的实例(由FactoryGirl动态构建).

如果您在规范中调用类似的内容:

user = User.new(@user)

@user的第一个(哈希)版本将起作用,但第二个(客观化)版本将无效(并向您抛出’stringify_keys’错误).要正确使用@user的第二个版本,您应该在规范中使用:

user = Factory(:user)

希望有所帮助.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读