Rspec 工厂女工;Mongoid嵌入和构建列表 问题
好的,我现在的问题是FactoryGirl在我的测验中构建嵌入式作业,它使用mongo而不是active record。我尝试使用一个构建列表,它可以与我的活动记录模型一起使用,但是我在使用mongoid时遇到了一个问题 我可以打电话给以下人员并获得测验作业:Rspec 工厂女工;Mongoid嵌入和构建列表 问题,rspec,mongoid,factory-bot,Rspec,Mongoid,Factory Bot,好的,我现在的问题是FactoryGirl在我的测验中构建嵌入式作业,它使用mongo而不是active record。我尝试使用一个构建列表,它可以与我的活动记录模型一起使用,但是我在使用mongoid时遇到了一个问题 我可以打电话给以下人员并获得测验作业: @quiznos.quiz_assignments.new(due_at: Time.now+ 1.day, published_at: Time.now) 但是如果我打电话 @quiznos = FactoryGirl.build(:
@quiznos.quiz_assignments.new(due_at: Time.now+ 1.day, published_at: Time.now)
但是如果我打电话
@quiznos = FactoryGirl.build(:quizWassignments)
@quiznos将创建一个测验,但是@quick.quick\u作业==[]
我甚至可以运行下面的程序,并且已经过去了
@quiz = FactoryGirl.build(:quiz)
@quiznos = FactoryGirl.build(:quiz_assignment, quiz: @quiz)
@quiz.quiz_assignments.should == [@quiznos]
问题
有没有一种方法可以让这个工作:quizWassignments
代码
当我第一次从Active Record切换到Mongoid时,我很难让Factory Girl扮演好角色。最后,我切换到-支持Mongoid开箱即用。我将尝试制作,谢谢提示。我似乎通过定义关联找到了解决办法,但无法像往常一样创建多个关联。我不得不做工厂:quizWassignments做测验作业{[factory.build(:quick_assignment)]}结束,但是在检查了制造文档之后,我已经安装了它,准备尝试它!看起来棒极了。曼恩!!!。。。有了制造商就容易多了。我现在唯一喜欢FG的是在工厂中定义工厂,而不是使用:from=>hook。但仅此而已!让我向您展示我发现的用于创建许多嵌入对象的代码的不同之处@theTRON,我使用多态关联将电子邮件嵌入到person对象中。我所做的与您在要点中所做的类似,但得到的是“BSON::InvalidDocument:无法将Mongoid::Relations::Embedded::Many类的对象序列化到BSON中。”。请看这里的代码。非常感谢您的帮助
class Quiz
include Mongoid::Document
include Mongoid::Timestamps
field :user_id
field :title
field :description
field :assignment_id
field :due_at, :type => DateTime
field :published_at, :type => DateTime
embeds_many :quiz_assignments
end
class QuizAssignment
include Mongoid::Document
include Mongoid::Timestamps
field :due_at, :type => DateTime
field :published_at, :type => DateTime
embedded_in :quiz
embeds_many :quiz_assignees
validates_presence_of :due_at, :published_at
validates_associated :quiz_assignees
end
FactoryGirl.define do
factory :quiz do
title { Factory.next(:name) }
description { Factory.next(:description) }
quiz_type "Practice"
factory :quizWassignments do
ignore do
count 3
end
after_create do |quiz, evaluator|
FactoryGirl.build_list(:quiz_assignment, evaluator.count, quiz: quiz)
end
end
end
factory :quiz_assignment do
due_at Time.now + 1.day
published_at Time.now
end
end