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

您可以在此处阅读更多相关信息

Deprecating static attributes in factory_bot 4.11