繁体   English   中英

具有隐式has_many关联的Factory Girl

[英]Factory Girl with implicit has_many association

我正在尝试测试具有隐式has_many关联的模型,并且遇到了一些困难。

我有一个表A,其列B_ID,其中B基本上是一个外键-除了数据库中没有表B或与对象B相关联的活动记录类。还有一个表C,其列B_ID。

在表C的模型中,我们有:

# implicit has_many :alphas
def alphas
   Alpha.where(:b_id => b_id).order(:xyz)
end

这种数据库结构对我拥有的数据有意义,并且非测试代码可以正常工作。

我的测试代码几乎可以正常运行,我希望我只是缺少一些简单的东西。

我为A和C定义了工厂,并且进行了测试:

a1 = Factory(:alpha, :b_id => 123, :xyz => 100)
a2 = Factory(:alpha, :b_id => 123, :xyz => 200)
c1 = Factory(:c, :b_id => 123)

puts c1.alphas.count
puts c1.alphas.first

c1.alphas.first.should == a1

输出为:

2
nil
<test fails>

更改共享B_ID的A对象的数量会导致c1.alphas.count发生更改,但我似乎无法真正进入隐式关联内部并获得A对象,而我总是得到nil。 在我的C模型中,我无法测试其他方法,因为这些方法需要访问单个A对象上的字段。

是否有人对这里幕后发生的事情有什么了解,或者我可能会做些什么来解决这个问题? 谢谢。

以这个为例,以具有admin角色的admin_user为例。

https://github.com/drhenner/ror_ecommerce/blob/master/spec/factories/user.rb

在这种情况下,角色不是工厂。

我发现最好像下面这样执行此操作。

  @order = Factory(:order)
  order_item = Factory(:order_item, :total => 5.52 )
  @order.stubs(:order_items).returns([order_item, order_item])

要么

  @order = Factory(:order)
  order_item = Factory(:order_item, :total => 5.52, :order => @order )

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM