FactoryGirl.create问题" LocalJumpError:没有给出块(yield)"用Rails 5

时间:2016-07-22 22:14:38

标签: factory-bot rspec-rails ruby-on-rails-5

我正在将我的应用升级到Rails 5 当使用rails 5运行测试时,我开始得到" LocalJumpError:没有给出块(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

My Gemfile如下所示:https://jpst.it/Lb6N

修改

我发现问题不在于FactoryGirl,而在于Mongoid gem。我在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

如果我用:

替换该行(yield self),问题就会消失

我不确定这是否是一个可行的解决办法,所以我打开了之前提到的机票,以获得mongoid的反馈并看看可以做些什么。

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

1 个答案:

答案 0 :(得分:0)

经过大量调试后,我在mongoid_token gem的本地分支上找到了问题的根源,这导致了这个奇怪的问题。 Mongoid和FactoryGirl宝石与此问题无关,也与原始的mongoid-token gem无关。