【发布时间】:2010-09-20 16:50:36
【问题描述】:
您能告诉我如何正确测试正则表达式代码吗?
我使用以下代码测试我的用户登录属性:
# user.rb
class User < ActiveRecord::Base
#...
validates_format_of :login, :with => /^[a-zA-z0-9_.]{3,18}$/
end
# user_spec.rb
describe User do
before(:each) do
@user = Factory.build(:user)
@user.save
end
subject { @user }
it { should be_valid }
it { should_not allow_value("b lah").for(:login) }
it { should_not allow_value("bälah").for(:login) }
it { should_not allow_value("b@lah").for(:login) }
it { should_not allow_value("bülah").for(:login) }
it { should_not allow_value("bßlah").for(:login) }
it { should_not allow_value("b!lah").for(:login) }
it { should_not allow_value("b%lah").for(:login) }
it { should_not allow_value("b)lah").for(:login) }
# ....
# Shall I test here every special sign????
end
但它似乎非常多余且不安全....有最佳实践吗?谢谢!
【问题讨论】:
-
只是好奇,在用户登录中使用这些字符有什么问题?似乎
ü之类的东西应该是有效的。 -
是的,这只是一个例子...但是有几个标志在用户名中并不合适,例如 /,(空白), ', ",...
标签: ruby-on-rails regex unit-testing ruby-on-rails-3 rspec