Shoulda validate_format_of . not_with has problem in framework (or in my understanding)

不羁的心 提交于 2019-12-06 01:21:12

问题


I put the following code into an RSpec test:

it { should validate_format_of(:email).not_with('test@test')}

and setup the actual class with:

validates :email, :presence => true, :format => /\b[A-Z0-9._%-]+@(?:[A-Z0-9-]+\.)+[A-Z]{2,4}\b/i

And when I run the tests I get:

Failures: 1) User Failure/Error: it { should validate_format_of(:email).not_with('test@test')} Expected errors to include "can't be blank" when email is set to "test@test", got errors: ["name can't be blank (nil)", "email is invalid (\"test@test\")"] # ./spec/models/user_spec.rb:8:in `block (2 levels) in '

When I do a passing test like:

it { should validate_format_of(:email).with('adam@trimediatlantic.com')}

Everything works as expected. Can someone tell me if I'm doing something wrong or if this is a framework problem. Thank you.


回答1:


Try this instead:

it { should_not allow_value("test@test").for(:email) }



回答2:


I just ran into a similar problem Turns out you need to invoke the with_message method and supply the exact error message as a string, or a regex that matches the error message. Doing so will convince the validate_format_of to cease its stubborn insistence that format errors result in "can't be blank" messages, and actually pass. For example:

it { should validate_format_of(:email).not_with('test@test')}

becomes

it { should validate_format_of(:email).not_with('test@test').with_message(/invalid/)}

This sure looks like a bug in the shoulda library.



来源:https://stackoverflow.com/questions/4134432/shoulda-validate-format-of-not-with-has-problem-in-framework-or-in-my-underst

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!