2017-01-13 3 views
1

Я супер новичок в тестировании своего приложения с помощью Rspec, и я пытаюсь проверить проверку комментария без пользователя и продолжать получать синтаксические ошибки. Вот код модели комментария.Тестирование валидации в модели с использованием Rspec с рельсами

class Comment < ApplicationRecord 
    validates :body, presence:true 
    validates :user, presence: true 
    validates :product, presence: true 
    validates :rating, numericality: {only_integer: true } 
    after_create_commit { CommentUpdateJob.perform_later(self, @user) } 
    belongs_to :user 
    belongs_to :product 

    scope:rating_desc, -> { order(rating: :desc) } 
end 

и вот comment_spec, что им пытаются проверить

require 'rails_helper' 

describe Comment do 

    before do 
    @product = Product.create!(name: "race bike", description: "fast race bike") 
     @user = User.create!(email: "[email protected]", password: "Maggie1!") 
     @product.comments.create!(rating: 1, user: @user, body: "Awful bike!") 
    end 

    it "is invalid without a user" 
    expect(build(:comment, user:nil)).to_not be_valid 
    end 

end 

Пожалуйста, помогите !!

+0

/Users/jerryhoglen/.rvm/gems/ruby-2.3.1/gems/activesupport-5.0.0.1/lib/active_support/dependencies.rb:87:in 'load ':/Пользователи/jerryhoglen/Desktop/nameofapp /spec/models/comment_spec.rb:15: синтаксическая ошибка, неожиданное keyword_end, ожидающее окончания ввода (SyntaxError) @ZhongZheng –

ответ

0

Что вы здесь делаете хорошо - строительные объекты и используя be_valid Искателя. Но если вы используете shoulda-matchers есть один вкладыш для тестирования модели проверки:

describe Comment do 
    it { is_expected.to validate_presence_of :user } 
end 

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

0
it "is invalid without a user" 
expect(build(:comment, user:nil)).to_not be_valid 
end 

вы пропустили do

it "is invalid without a user" do 
    expect(build(:comment, user:nil)).to_not be_valid 
end 
+0

ok исправлено это! теперь его терпеть неудачу испытание. –

+0

.F .. Неудачи: 1) Комментарий недействителен без пользователя Failure/Error: ожидать (сборка (: комментарий, пользователь: ноль).) To_not be_valid NoMethodError: неопределенный метод 'сборки» для # # ./spec/models/comment_spec.rb:12:in 'block (2 levels) in ' Закончено за 0.25242 секунд (файлы приняты 2,57 секунд для загрузки) 9 примеров, 1 сбой Неверные примеры: rspec ./spec/models/comment_spec.rb:11 # Комментарий недействителен w без пользователя @zhongzheng –

+0

у вас есть FactoryGirl? попробуйте 'FactoryGirl.build (: комментарий, пользователь: ноль)' –

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