我对模型属性进行了验证,该属性仅允许使用字母数字字符(仅限字母和数字)。
如何在不担心其他验证的情况下测试此专栏?
validates :url, uniqueness: true, format: { with: /[^0-9a-z]/i,
message: "Alphanumeric characters only." }
有没有办法隔离这个属性的测试?
答案 0 :(得分:0)
在测试format
时,您可以使用allow_values
中的Shoulda Matchers gem;我认为您必须提供一些有代表性的测试用例以确保允许某些值,而其他值则不允许:
describe 'validations' do
describe 'for url' do
let(:valid_urls) do
['Valid', 'URL', '3x4mp1e5']
end
let(:invalid_urls) do
['!nvalid', '|_|rl', 'example$']
end
it 'allows valid URLs' do
expect(your_object).to allow_values(*valid_urls).for(:url)
end
it 'does not allow invalid URLs' do
expect(your_object).not_to allow_values(*invalid_urls).for(:url)
.with_message("Alphanumeric characters only.")
end
end
end
对于唯一性,您可以使用validates_uniqueness_of
中的Shoulda Matchers gem。