当前位置:  开发笔记 > 后端 > 正文

如何引用我在Fabricator中制作的对象?

如何解决《如何引用我在Fabricator中制作的对象?》经验,为你挑选了1个好方法。



1> dm78..:

对.在文档中忽略了它.


您可以在Fabricators中将它们定义为一个块,该块可选地接收正在制作的对象以及定义的任何瞬态属性的散列.与在Fabricator中工作的任何东西一样,您也可以在调用Fabricate时定义它们,它们将像您期望的那样工作.回调也可堆叠的,这意味着你可以在一个制造者声明相同类型的多个,当你继承另一个制造者,他们将不会被打一顿.

Fabricator(:place) do
  before_validation { |place, transients| place.geolocate! }
  after_create { |place, transients| Fabricate(:restaurant, place: place) }
end

另外,在我的情况下,我需要使用after_save回调.我能够在制造商内部设置current_bar我的foo对象,但是一旦在规范中,它current_bar仍然是nil.updateafter_create里面没有这个方法(我是ruby的新手,所以我不知道为什么),但它在after_save中可用.调用更新让我走了.

Fabricator(:foo) do

  transient :current_bar_data

  after_save { |foo, transients|
    bar = Fabricate( :bar, foo: foo, bar_data: transients[ :current_bar_data ] )
    foo.update( current_bar: bar )
  }

  current_bar nil
end

现在我可以为我的规格制作一个foo完整的current_bar:

let!( :some_foo ) { Fabricate( :foo, current_bar_data: "some bar data" ) }

推荐阅读
重庆制造漫画社
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有