gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 10:08:42 27 4
gpt4 key购买 nike

我的 User_spec.rb 中有以下代码块:

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

用于使用这些属性创建一个 using。然而,当我将所有这些属性移动到 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 create/new 方法(糟糕!)。看起来你在这里做同样的事情。

您列出的第一个/顶部@user 是一个值的散列,但是第二个/底部@user 是一个您的用户对象的实例(由 FactoryGirl 构建在飞行中)。

如果您在规范中这样调用:

user = User.new(@user)

@user 的第一个(散列)版本可以工作,但是第二个(对象化的)版本不会工作(并向您抛出“stringify_keys”错误)。要正确使用第二个版本的@user,你应该在你的规范中有这个:

user = Factory(:user)

希望对您有所帮助。

关于ruby-on-rails - 使用 Factory Girl 时未定义的方法 `stringify_keys',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7987733/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com