【发布时间】:2016-10-15 16:34:24
【问题描述】:
经过一番修改后,我提出了以下测试,以确保我的模型验证器上的正则表达式模式正常工作。我想知道是否有更好的方法来测试这些条件而不是构建错误的字符串。我想考虑批准的正则表达式模式之外的任何和所有字符。不同的列也可能有不同的验证器。
型号
validates :provider_unique_id,
presence: true,
length: { maximum: 50 },
format: { with: /\A[A-Za-z0-9]+\z/ }
规格
describe 'provider unique id' do
let(:bad_string) { (0..255).map(&:chr).select { |x| x != /\A[A-Za-z0-9]+\z/ }.sample(20).join }
it 'should exist' do
shop.provider_unique_id = nil
expect(shop.valid?).to be_falsey
end
it 'passes regex rules' do
shop.provider_unique_id = bad_string
expect(shop.valid?).to be_falsey
end
end
【问题讨论】:
标签: ruby-on-rails ruby regex rspec rspec-rails