Rails:'user' 工厂中的未定义方法 'name' 或所有工厂的未定义方法
Rails: Undefined method 'name' in 'user' factory OR Undefined Method for all factories
我目前正在使用 RSpec 和 Factory_Bot_Rails gem 来测试应用程序,但我 运行 遇到以下问题。
当使用 factory_bot_rails 版本 5.0.2 gem 时,我的工厂现在都给我所有注册工厂的未定义方法错误。如果我将 gem 的版本降级到 4.11 就可以了。
例如,对于我的用户工厂,它具有 name 作为定义的属性之一,它显示错误
'user' 工厂中的未定义方法 'name'
我已经很努力地解决了这个问题,但它并不可行。
我们将不胜感激任何形式的帮助。
这是我解决问题的方法
从 Thoughtbot 的博客中,我开始意识到静态定义的属性已被弃用,然后从 factory_bot >= 5.0 中删除。因此,不要为您的工厂使用静态定义的属性,而是使用动态定义的属性。也就是说,在工厂中每个定义的属性周围插入大括号 {}
举个例子
使用动态定义的属性
factory :robot do
name { "Ralph" }
email { "ralph@example.com" }
end
而不是静态定义的属性
factory :robot do
name "Ralph"
email "ralph@example.com"
end
您可以在此处阅读更多相关信息
我目前正在使用 RSpec 和 Factory_Bot_Rails gem 来测试应用程序,但我 运行 遇到以下问题。
当使用 factory_bot_rails 版本 5.0.2 gem 时,我的工厂现在都给我所有注册工厂的未定义方法错误。如果我将 gem 的版本降级到 4.11 就可以了。
例如,对于我的用户工厂,它具有 name 作为定义的属性之一,它显示错误
'user' 工厂中的未定义方法 'name'
我已经很努力地解决了这个问题,但它并不可行。
我们将不胜感激任何形式的帮助。
这是我解决问题的方法
从 Thoughtbot 的博客中,我开始意识到静态定义的属性已被弃用,然后从 factory_bot >= 5.0 中删除。因此,不要为您的工厂使用静态定义的属性,而是使用动态定义的属性。也就是说,在工厂中每个定义的属性周围插入大括号 {}
举个例子
使用动态定义的属性
factory :robot do
name { "Ralph" }
email { "ralph@example.com" }
end
而不是静态定义的属性
factory :robot do
name "Ralph"
email "ralph@example.com"
end
您可以在此处阅读更多相关信息