我正在将我的应用升级到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的反馈并看看可以做些什么。
当我收到任何反馈时,我会再次更新。
答案 0 :(得分:0)
经过大量调试后,我在mongoid_token gem的本地分支上找到了问题的根源,这导致了这个奇怪的问题。 Mongoid和FactoryGirl宝石与此问题无关,也与原始的mongoid-token gem无关。