Rails:“用户”工厂中的未定义方法“名称”或所有工厂的未定义方法

Pro*_*ton 2 testing rspec ruby-on-rails factory-bot

我目前正在使用 RSpec 和 Factory_Bot_Rails gems 来测试应用程序,但我遇到了下面的问题。

当使用 factory_bot_rails 5.0.2 gem 时,我的工厂现在都给我所有注册工厂的未定义方法错误。如果我将 gem 的版本降级到 4.11,它就可以工作。

例如,对于我的用户工厂,它的名称是定义的属性之一,它显示错误

“用户”工厂中未定义的方法“名称”

我已经非常努力地解决这个问题,但这是不可行的。

任何形式的帮助将不胜感激。

Pro*_*ton 5

这是我解决问题的方法

从thoughbot 的博客中,我意识到静态定义的属性已被弃用,然后从 factory_bot >= 5.0 中删除。因此,不要为您的工厂使用静态定义的属性,而是使用动态定义的属性。也就是说,在工厂中每个定义的属性周围插入大括号{}

这是一个例子

使用动态定义的属性

factory :robot do
  name { "Ralph" }
  email { "ralph@example.com" }
end
Run Code Online (Sandbox Code Playgroud)

而不是静态定义的属性

factory :robot do
  name "Ralph"
  email  "ralph@example.com"
end
Run Code Online (Sandbox Code Playgroud)

你可以在这里阅读更多关于它的信息

弃用 factory_bot 4.11 中的静态属性

就这样

我希望这有帮助