Factory Girl中未定义`stringify_keys`方法,如何正确使用?
- 内容介绍
- 文章标签
- 相关推荐
本文共计389个文字,预计阅读时间需要2分钟。
在`User_spec.rb`文件中,你可以使用以下代码块来创建一个用户实例,并直接输出这些属性:
ruby@user={ username: 'newuser', email: 'new@user.com', fname: 'new', lname: 'user', password: 'userpw', password_confirmation: 'userpw' }puts Username: #{@user[:username]}puts Email: #{@user[:email]}puts First Name: #{@user[:fname]}puts Last Name: #{@user[:lname]}puts Password: #{@user[:password]}puts Password Confirmation: #{@user[:password_confirmation]}
我在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)
希望有所帮助.
本文共计389个文字,预计阅读时间需要2分钟。
在`User_spec.rb`文件中,你可以使用以下代码块来创建一个用户实例,并直接输出这些属性:
ruby@user={ username: 'newuser', email: 'new@user.com', fname: 'new', lname: 'user', password: 'userpw', password_confirmation: 'userpw' }puts Username: #{@user[:username]}puts Email: #{@user[:email]}puts First Name: #{@user[:fname]}puts Last Name: #{@user[:lname]}puts Password: #{@user[:password]}puts Password Confirmation: #{@user[:password_confirmation]}
我在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)
希望有所帮助.

