Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby 从FactoryGirl更新到factoryBot会导致NoMethodError_Ruby_Rspec_Factory Bot - Fatal编程技术网

Ruby 从FactoryGirl更新到factoryBot会导致NoMethodError

Ruby 从FactoryGirl更新到factoryBot会导致NoMethodError,ruby,rspec,factory-bot,Ruby,Rspec,Factory Bot,我试着从工厂女孩变成工厂机器人。这应该不是一个大问题,但我没有让它发挥作用。守则: 添加到Gem文件 gem 'factory_bot' 添加到spec\u帮助程序 FactoryBot.definition_file_paths = %w(spec/factories) FactoryBot.find_definitions config.include FactoryBot::Syntax::Methods 工厂 FactoryBot.define do factory :user

我试着从工厂女孩变成工厂机器人。这应该不是一个大问题,但我没有让它发挥作用。守则:

添加到Gem文件

gem 'factory_bot'
添加到spec\u帮助程序

FactoryBot.definition_file_paths = %w(spec/factories)
FactoryBot.find_definitions

config.include FactoryBot::Syntax::Methods
工厂

FactoryBot.define do
  factory :user do
    first_name 'John'
    last_name  'Doe'
    birthdate  { 21.years.ago }
    admin false
  end
end
当我尝试运行rspec测试时,出现以下错误:

NoMethodError: undefined method 'first_name' in 'user' factory!
   Method_missing at C:/jruby-9.1.17.0/lib/ruby/gems/shared/gems/factory_bot-5.0.2/lib/factory_bot/definition_proxy.rb:97
   block in (root) at <path to factory>
NoMethodError:user工厂中未定义的方法first\u name!
方法_在C中缺失:/jruby-9.1.17.0/lib/ruby/gems/shared/gems/factory_bot-5.0.2/lib/factory_bot/definition_proxy.rb:97
在(根)处阻塞
在我看来,gem被正确地加载到项目中,factoryBot代码被执行。但由于某种原因,它不承认工厂的结构

注:
-我做了一个bundle安装/更新

就像人们在评论中说的那样,静态属性如
first\u name'John'
在v4(检查)上被弃用,然后在v5上被删除,另一种方法是将它们变成动态属性:
first\u name{'John}

他们甚至包括一个Rubocop来帮助您修复所有工厂:

rubocop \
  --require rubocop-rspec \
  --only FactoryBot/AttributeDefinedStatically \
  --auto-correct
我的建议是缓慢但可靠地迁移,使用类似的版本从
FactoryGirl
迁移到
FactoryBot
,运行您的规范,检查所有弃用警告,运行自定义Rubocop自动更正工厂,然后仅在阅读本手册后迁移主要版本

我同意这条消息可能会更好一些,通常情况下,弃用的主要目标是简化代码和减少分支逻辑,因此,一旦弃用警告存在了足够的时间,并且是删除它的时候了,对旧用法的任何检测都将是必须删除的额外代码,这在开源项目中是常见的结果


很高兴你找到了出路。

试试看塞尔吉奥说的
名字{'John'}
^^^^^^。已在factory_bot 5中删除。@Stefan:不过,错误消息可能会更好。它现在没用了。@Stefan:是的,这就是问题所在。谢谢是的,信息可能会更好。。。