1
我有一个简单的加载ActiveModel类抱着我定义的列入验证字符串字段加载ActiveModel的包容性验证的每个值:如何产生的RSpec测试用例
$ rails generate model Person name:string gender:string
class Person < ActiveRecord::Base
validates :name, presence: true
validates :gender, inclusion: { in: %w(male female unknown) }
end
现在我编写一些RSpec测试用例,这应该代表该模型始终最新的文档。
describe Person, type: :model do
context 'attributes' do
context 'gender' do
it 'allows "male"' { ... }
it 'allows "female"' { ... }
it 'allows "unknown"' { ... }
end
end
end
我该如何自动生成这三个测试用例?
我知道我可以通过Person.validators_on(:gender).first
获得验证器,但不知道如何查询in
选项可枚举的验证器实例。
的最终目标是通过什么来代替三个测试情况下,像
query_validator_for_in_enum().each do |valid_gender|
it "allows '#{valid_gender}'" { ... }
end
理由:我不希望创建“社会性别”一个单独的表来解决此问题。
对,我可以将模型定义中的相同枚举复制并粘贴到规范中。但是,这样我总是必须记得在更改模型验证枚举时更新规范。 –
实际上,我会不停地用'GENDERS'来只更新它在一个地方 - 模型。测试不需要改变 –
m(因为,一个常量'GENDERS'。这个解决方案太简单了,我想到了。非常感谢! –