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'。這個解決方案太簡單了,我想到了。非常感謝! –