тест для моделей, указывающих на rspec rails 5 - PullRequest
0 голосов
/ 18 февраля 2019

Я недавно делаю юнит-тестирование в Ruby on Rails, поэтому мне нужна помощь в тестировании.

Это моя модель User.rb

class User < ApplicationRecord
  belongs_to :created_by, foreign_key: :created_by_id, class_name: 'User'
end

Я хочу создатьтест для проверки этой ассоциации.Я пытался сделать это на моем user_spec.rb

describe 'should validates associations' do
  subject { User.new }
  it { should belong_to(subject.created_by) }
end

Это ответ об ошибке

Сбои:

1) Пользователь должен проверять связи, которые должны принадлежать Сбою/ Ошибка: это {должен принадлежать_в (субъект.created_by)} Ожидаемый пользователь должен иметь ассоциацию с принадлежащим_применением (без ассоциации> вызываемая) # ./spec/models/user_spec.rb:17:in `блок (3 уровня) в '

Ответы [ 2 ]

0 голосов
/ 18 февраля 2019

ActiveRecord должен соответствовать , для выполнения тестов не требуется создавать экземпляр объекта класса.Здесь вы инициализировали новый экземпляр User в качестве субъекта и попытались передать его сопоставителю musta для проверки ассоциации belongs_to.Однако для проверки связи belongs_to на модели с определенным внешним ключом и именем класса можно использовать следующий тест:

it { should belong_to(:created_by).with_foreign_key(:created_by_id).class_name('User') }

Сопоставители ActiveRecord принимают множество других параметров, кроме двухупомянутое выше.Эти параметры очень хорошо документированы в коде Shoulda на GitHub

0 голосов
/ 18 февраля 2019

Вы передаете экземпляр matcher, но он ожидает ссылочного имени и ссылочного имени класса.Ваш тест должен быть похож на следующий.

it { should belong_to(:created_by).of_type(User) } 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...