0

Я пытаюсь проверить атрибуты модели, для форматирования с этим:Shoulda формат тестирование

# myapp/test/unit/comment_test.rb 
require 'test_helper' 

class CommentTest < ActiveSupport::TestCase 
    should_belong_to :article 

    should_validate_presence_of :name 
    should_validate_presence_of :email 
    should_validate_presence_of :content 
    should_validate_presence_of :article_id 

    should_not_allow_values_for :name, "123", "bob_y", "dave!" 
    should_allow_values_for :name, "Bob", "Joe Smith" 

    should_not_allow_values_for :email, "abc", "[email protected]", "[email protected]!d.com", "[email protected]" 
    should_allow_values_for :email, "[email protected]", "[email protected]", "[email protected]" 
end 


# myapp/app/models/comment.rb 
class Comment < ActiveRecord::Base 
    belongs_to :article 

    validates_presence_of :name 
    validates_presence_of :email 
    validates_presence_of :content 
    validates_presence_of :article_id 

    validates_format_of :name, :with => /\b[\w]+\b/i 
end 

я делаю подобный род проверку в других моделях, и это прекрасно работает, но в этом, я получаю эти ошибки:

2) Failure: 
test: Comment should not allow email to be set to "[email protected]". (CommentTest) 
[/Library/Ruby/Gems/1.8/gems/thoughtbot-shoulda-2.10.2/lib/shoulda/assertions.rb:67:in `assert_rejects' 
/Library/Ruby/Gems/1.8/gems/thoughtbot-shoulda-2.10.2/lib/shoulda/active_record/macros.rb:139:in `__bind_1276100388_113010' 
/Library/Ruby/Gems/1.8/gems/thoughtbot-shoulda-2.10.2/lib/shoulda/context.rb:351:in `call' 
/Library/Ruby/Gems/1.8/gems/thoughtbot-shoulda-2.10.2/lib/shoulda/context.rb:351:in `test: Comment should not allow email to be set to "[email protected]". ']: 
Expected errors when email is set to "[email protected]", got errors: name can't be blank (nil)name is invalid (nil)content can't be blank (nil)article_id can't be blank (nil) 

Я получаю это на каждом испытании, которое следует делать, я использую Factory Girl, если это имеет значение.

ответ

2

Ваша модель комментариев не подтверждает формат электронной почты. Нет ничего плохого в том, что вы делаете, ваш тест просто не проходит, потому что ваш код неверен для прохождения теста.

Добавить подтверждение для формата электронной почты в ваш класс комментариев.

validates_format_of :email, :with => /\A([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z]{2,})\Z/i 

, а затем ваш тест должен пройти.

+0

Ничего себе, я понятия не имею, почему я этого не видел, возможно, работал слишком поздно. благодаря – trobrock

Смежные вопросы