工厂机器人 - FactoryGirl.create 问题 "LocalJumpError: no block given (yield)" 与 Rails 5



我正在将我的应用程序升级到Rails 5当在启用rails 5的情况下运行测试时,我开始在几个对象创建语句上得到"LocalJumpError:no block giving(yield)",比如以下语句:

let!(:entity) { create(:entity) }

这是在我升级到Rails 5.0.0之后开始发生的我试着在那一行使用build而不是create,但在这种情况下没有出现错误。

有人有类似的问题吗?

我的实体工厂是这样的:

FactoryGirl.define do
  factory :entity do
    entity_type 'A'
    account { create(:account) }
    ilk []
    after(:build) do |entity|
      entity.names << build(:name)
      entity.addresses << build(:address)
    end
    trait :incomplete do
      incomplete true
    end
  end

我的Gemfile是这样的:https://jpst.it/Lb6N

编辑

我发现问题不在于FactoryGirl,而在于Mongoid宝石。我在JIRA上为那个项目开了一张票。以下是链接,但您需要在JIRA拥有一个可以访问Mongoid项目的帐户:https://jira.mongodb.org/browse/MONGOID-4302

这个票证的细节是,通过运行rspec-b来查看跟踪,我在mongoid gem:上发现了这一行的问题

https://github.com/mongodb/mongoid/blob/master/lib/mongoid/clients/options.rb#L25

如果我用替换该行(自屈服),问题就会消失

然而,我不确定这是否是一个可行的解决方案,所以我打开了之前提到的罚单,以获得mongoid的反馈,看看能做些什么。

当我得到任何反馈时,我会再次更新。

经过大量调试,我在mongoid_token-gem的本地分支上发现了问题的根源,这就是导致这个奇怪问题的原因。Mongoid和FactoryGirl宝石与此问题无关,也与原始Mongoid代币宝石无关。

相关内容

  • 没有找到相关文章

最新更新