我在我的用户模型中有以下验证:
validates :name, :format => {
:with => /^[a-zA-Z]+$/,
:message => 'Only letters allowed.'
}下面是我的测试:
test 'name must consist of letters only' do
user = User.new(:name => 'test123')
assert user.errors[:name].any?
end测试总是失败。我做错了什么?xD
发布于 2013-03-10 22:48:36
你的断言与它应该是相反的。颠倒断言的条件。
尝尝这个
test 'name must consist of letters only' do
user = User.new(:name => 'test123')
assert !user.valid?
end另外,尝试使用validates_format_of而不是validate
validates_format_of :name, :with => /^[a-zA-Z]+$/, :message => 'Only letters allowed.'发布于 2013-03-11 00:23:12
我找到了我的问题所在:
在尝试访问user.errors之前,我应该使用user.valid?、user.invalid?或user.save。上面这些命令实际上会产生错误,之后我就可以访问它们了。
最终结果:
validates_format_of :name, :with => /^[a-zA-Z]+$/, :message => 'Only letters allowed'
test 'name must consist of letters only' do
user = User.new(:name => 'test123')
user.save
assert user.errors[:name].any?
endhttps://stackoverflow.com/questions/15323444
复制相似问题