1

在我的测试期间,Moingoid 似乎并没有持续设置嵌入式关系。在我的用户模型中,我有:

  def vote_on(账单,价值)
    如果 my_groups = self.groups
      my_groups.each 做 |g|
        bill.votes.create(:value => value, :user_id => self.id, :group_id => g.id)
        # 只针对工厂的结果:bill.votes.first.group = nil
        # 和 bill.votes.first.user = nil !!
        # self.id 和 g.id 在测试期间具有良好的值,它们只是没有持久化
      结尾
    别的
      引发“此用户没有群组”##{self.full_name}”
    结尾
  结尾

其他有用的代码可能是:

##账单模型
班比尔
   embeds_many:投票

##投票模型

班级投票
  包括 Mongoid::Document
  field :value, :type => Symbol # 可以是 :aye, :nay, :abstain
  #field :group_type, :type => 整数

  属于_to:用户
  所属:组

  嵌入:账单

结尾

## 测试

  测试“描述性统计应该起作用”做
    user1 = Factory.build(:user)
    b = Factory.build(:bill)
    user1.vote_on(b, :aye) # 这里创建了 nil 值!
    计数 = b.descriptive_tally
    assert_not_nil 计数
  结尾

##票据工厂

Factory.define :bill do |f|
  f.bill_html "只是事实"
  ...
  f.state “介绍”
  f.text_updated_on DateTime.parse("2011-06-16 00:00:00 Z")
  f.text_word_count 2356
  f.votes
结尾

##用户工厂

Factory.define :用户做|u|
   u.email 'user@domain.com'
   u.name '用户'
   u.roles_mask 1
   u.密码“秘密”
   u.password_confirmation “秘密”
   u.groups {[Factory.build(:group, {:name => 'foreign', :type => :custom})]}
结尾

这对我来说真是令人头疼。也许这是我需要更好地探索和提交的错误。我的第一个猜测是我的工厂或测试设置中缺少一些简单的东西。此代码在开发中运行良好。任何帮助是极大的赞赏。

4

1 回答 1

5

我认为大多数工厂宝石和 Mongoid 都存在问题。我似乎记得在尝试同时使用 Factory Girl 和 Machinist 时遇到了很多问题。

制造似乎是当前在 Mongoid 测试中进行对象生成的推荐标准。它在我们所有的 Mongoid 项目中都非常适合我们。

于 2011-06-23T06:01:09.967 回答