我有以下工厂:
FactoryGirl.define do
factory :poem do
skip_create
title "Poem title"
intro_verse
trait_verse
message_verse
end
end
表示以下非活动记录模型类:
class Poem
attr_accessor :title, :intro_verse, :trait_verse, :message_verse
end
我可以为这样的类创建一个工厂吗?
当我运行以下测试时:
it "has a valid factory" do
expect(build(:poem)).to be_valid
end
我收到以下错误:
Failure/Error: expect(build(:poem)).to be_valid
NoMethodError:
undefined method `valid?'
答案 0 :(得分:4)
错误是因为该类没有实例方法valid?
。 (Active Record模型默认定义)
您需要提出一些逻辑来确定Poem实例是否有效,并相应地编写valid?
方法。
IIRC,语法expect(something).to be_condition
只调用condition?
上的方法something
,如果返回false则失败。
答案 1 :(得分:2)
使用ActiveModel::Validations模块添加验证类对象的功能,例如Active Record:
class Poem
include ActiveModel::Validations
validates :title, presence: true
attr_accessor :title, :intro_verse, :trait_verse, :message_verse
end
poem = Poem.new
poem.valid? #false
poem.title = "title"
poem.valid? #true