ruby-on-rails - 从父 Factory Girl 工厂访问子属性

标签 ruby-on-rails ruby unit-testing testing factory-bot

我正在实现 Factory Girl 以替代我的 Rails 应用程序中的固定装置。我有几个表,我试图使用关联来表示。但是,除了定义关联之外,为了给循环带来一个问题,我还需要从父工厂访问子工厂的属性。

下面是我正在尝试做的一个例子:

  • Factory :foo_bar 与 Factory :foo 相关联,Factory :foo 与 Factory :bar 相关联
  • 从 :foo_bar,我试图访问 :foo 和 :bar 的属性

示例如下:

Factory.define :bar do |e|
  e.name          "Bar"
end

Factory.define :foo do |e|
  e.bar         {|b| b.association(:bar)}
end

Factory.define :foo_bar do |b|
  f = b.association(:foo)
  b.foo_id      foo.id
  b.bar_id      foo.bar_id
end

我已经阅读了许多教程和其他问题,但没有看到任何有关如何执行此操作的示例。获得相同结果的任何想法或其他方法?

谢谢!


编辑

根据几个问题,这里有一些我原本应该包含的说明......

:foo_bar 不是一个join table,而是一个模型,自带其他属性。

这就是我真正想要完成的:

  • 让 :foo_bar 创建一个关联的工厂
  • 然后让关联的工厂创建它的关联工厂
  • (这是我正在努力解决的元素)让 :foo_bar 从底层工厂访问属性

所以,如果 :foo_bar > :foo > :bar 那么我会从 :foo_bar 获取 :bar 的 ID。

最佳答案

我正在使用 after_build 钩子(Hook)来处理这样的情况:

Factory.define :foo do |f|
  f.name "Foo"
  f.association :foo
  f.after_build do |obj|
    obj.foo_bar = obj.foo.bar
  end
end

关于ruby-on-rails - 从父 Factory Girl 工厂访问子属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3646212/

相关文章:

ruby-on-rails - 通过 Ruby 访问 mac 应用程序

ruby-on-rails - 如何将字符串拆分为二维数组并将运算符应用于 Rails 3.2 中的数组元素?

ruby - 如何处理 Rails 中的加密 URL?

java - 有没有办法自动化 junit bean 属性测试?

javascript - 用 Jasmine 测试异步功能

ruby-on-rails - Railscasts 的 "Authentication from Scratch"有多安全?

ruby-on-rails - 如何让 Rails 中的 named_scope 返回一个值而不是数组?

ruby-on-rails - Stripe API key 缺少 Rails

sql - 如何在 Ruby on Rails 迁移中使用 'gaps' 修复列的​​顺序

java - 识别语句/行中使用的变量