Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/57.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/22.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 on rails FactoryGirls随机使用'失败;工厂未注册';,为什么?_Ruby On Rails_Ruby_Rspec_Ruby On Rails 4_Factory Bot - Fatal编程技术网

Ruby on rails FactoryGirls随机使用'失败;工厂未注册';,为什么?

Ruby on rails FactoryGirls随机使用'失败;工厂未注册';,为什么?,ruby-on-rails,ruby,rspec,ruby-on-rails-4,factory-bot,Ruby On Rails,Ruby,Rspec,Ruby On Rails 4,Factory Bot,我有一些随机失败的测试,大约有20%的测试失败。这意味着,在不更改代码的情况下,每次运行测试时,5次中的1次将失败,并出现“Factory not registered”错误。这很奇怪( 这是consone输出: Failures: 1) Unit#new_from_string returns factor for metric conversions Failure/Error: FactoryGirl.create :taza ArgumentError:

我有一些随机失败的测试,大约有20%的测试失败。这意味着,在不更改代码的情况下,每次运行测试时,5次中的1次将失败,并出现“Factory not registered”错误。这很奇怪(

这是consone输出:

Failures:

  1) Unit#new_from_string returns factor for metric conversions
     Failure/Error: FactoryGirl.create :taza
     ArgumentError:
       Factory not registered: taza
     # ./spec/models/unit_spec.rb:29:in `block (2 levels) in <top (required)>'

Finished in 0.29619 seconds
4 examples, 1 failure

Failed examples:

rspec ./spec/models/unit_spec.rb:22 # Unit#new_from_string returns factor for metric conversions

Randomized with seed 61727
文件“spec/factories/units.rb”:


我认为问题出在这条线上

FactoryGirl.find_definitions
实际上,当您的工厂位于正确的目录中时(我知道是这样),并且您将
gem-factory\u-girl\u-rails
放在Gemfile中,就不需要这一行了

我认为,20%的时间,第一次运行第二个测试。此时,没有工厂定义,测试失败。另一个测试有这样的定义并通过。在其他时间,第一个测试首先运行,因此定义存在

我的建议是:

  • 确保文件中有
    factory\u girl\u rails
    ,而不是
    factory\u girl
  • 删除该定义行
  • [可选但推荐]如果没有太多工厂,将所有定义放在一个文件
    spec/factories
    中,并删除所有其他工厂文件。这将更易于管理

  • 我认为问题出在这条线上

    FactoryGirl.find_definitions
    
    实际上,当您的工厂位于正确的目录中时(我知道是这样),并且您将
    gem-factory\u-girl\u-rails
    放在Gemfile中,就不需要这一行了

    我认为,20%的时间,第一次运行第二个测试。此时,没有工厂定义,测试失败。另一个测试有这样的定义并通过。在其他时间,第一个测试首先运行,因此定义存在

    我的建议是:

  • 确保文件中有
    factory\u girl\u rails
    ,而不是
    factory\u girl
  • 删除该定义行
  • [可选但推荐]如果没有太多工厂,将所有定义放在一个文件
    spec/factories
    中,并删除所有其他工厂文件。这将更易于管理

  • spec\u-helper
    中,你是否
    需要
    ing工厂文件?在
    spec\u-helper
    中,你是否
    需要
    ing工厂文件?似乎有效!谢谢!!小注:在Gemfile中,我添加了gem“factory\u-girl\u-rails”,github:“thoughtbot/factory\u-girl\u-rails”似乎有效!谢谢!!小注:在Gemfile中,我添加了gem“gem”ry_girl_rails,github:“thoughtbot/factory_girl_rails”
    
    FactoryGirl.find_definitions