我有两个名为 Student
和 Teacher
的型号。他们两个都有相同的字段,例如name
,age
等。除了Teacher
具有两个额外的属性qualification
和college
。现在,我为编写RSPEC,决定为与以下相同的工厂创建工厂:
FactoryGirl.Define做 工厂:学生做 输入"学生" 工厂:老师做 输入"老师" 资格学士学位 大学xyz 结尾 结尾结尾
我在student
内定义了teacher
,因为它们两个都具有相同的属性,除了teacher
具有两个额外的属性。我添加了如上所述的属性,但它的错误为:
1)老师#default_value_for 故障/错误:{期望(abjuct.qualification).be_false} nomethoderror: #student的未定义方法"资格":0x0000000E8C0088'在1.75秒内完成(文件需要14.48秒才能加载)1个例子,1个失败
如何在Teacher
工厂中添加这些属性?
谢谢
如果您的Student
和Teacher
型号是2种不同的类,而无需继承,则无法执行您尝试实现的目标。
根据FactoryBot来源:
您可以轻松地创建多个工厂对于同一类而无需 通过嵌套工厂重复常见属性
factory :post do title { "A title" } factory :approved_post do approved { true } end end
如果Teacher
继承了Student
类。
示例此处:如何使用继承用户模型定义工厂
我通过删除工厂中的嵌套来解决上述问题。
FactoryGirl.Define做 工厂:学生做 输入"学生" 结尾 工厂:老师做 输入"老师" 资格学士学位 大学xyz 结尾结尾
这在同一工厂创建了两个不同的工厂。:)