ruby-on-rails - 如何在 RSpec 中另一个工厂内定义的工厂中定义两个新属性?
问题描述
我有两个名为Student
和的模型Teacher
。它们都具有相同的字段name
,例如age
等。除了Teacher
有两个额外的属性qualification
和college
。现在为了编写 rspec,我决定为以下内容创建工厂:
FactoryGirl.define 做 工厂:学生做 输入“学生” 工厂:老师做 输入“老师” 资格学士学位 大学 XYZ 结尾 结尾 结尾
我定义了teacher
内部student
,因为它们都具有相同的属性,除了teacher
有两个额外的属性。我添加了上面的属性,但它给出了错误:
1) 教师#default_value_for 失败/错误:它 { expect(subject.qualification).to be_false} 无方法错误: #Student:0x0000000e8c0088 的未定义方法“资格” 在 1.75 秒内完成(文件加载需要 14.48 秒) 1个例子,1个失败
如何在Teacher
工厂中添加这些属性?
谢谢
解决方案
如果您的Student
和Teacher
模型是没有继承的 2 个不同的类,那么您将无法实现您想要实现的目标。
您可以轻松地为同一个类创建多个工厂,而无需通过嵌套工厂来重复公共属性
factory :post do title { "A title" } factory :approved_post do approved { true } end end
Teacher
如果继承类,您实际上可以编写嵌套工厂Student
。
此处的示例:如何使用继承用户模型定义工厂
推荐阅读
- python - 为列值的周数创建自定义列
- node.js - Visual Studio 2017:命令“gulp”退出,代码为 9009
- javascript - 如何在nodemailer中发送图像并将其作为html中的背景图像?
- python - 按下 5 次后 MicroPython 计数按钮点击次数
- javascript - 将泛型类型传递给打字稿中的函数
- r - 重塑数据框
- mongodb - CastError:在路径“消息”MongoDB 中,值“未定义”(未定义类型)的数字转换失败
- javascript - 静态金额不可变
- javascript - 如何在 NUXT js 中访问 firebase realtimedb
- javascript - 使用 useParams 从 url 获取值