NoMethodError: неопределенный метод `belong_to' для теста при использовании совпадений в модульном тесте

Я пытался использовать shoulda-matchers для проверки связи между моделями. Однако он всегда показывает ошибку: TakeTest # test_belongs_to: NoMethodError: undefined method belong_to' for #<TakingTest:0x00007fc14b8e64a8> test/models/taking_test.rb:8:inblock in «Я проверил другой ответ, большинство из них были не менее 4 лет назад. Он все еще работает с рельсами 6.0?

рубин '2.6.5'

рельсы', '~> 6.0.2'

гем-файл

group :development, :test do
  gem 'rspec-rails'
end
group :test do
  gem 'shoulda', '~> 3.5'
  gem 'shoulda-matchers'
end

спецификация/rails_helper.rb:

Shoulda::Matchers.configure do |config|
  config.integrate do |with|
    with.test_framework :rspec
    with.library :rails
 end
end

тест/модели/taking_test.rb

class TakingTest < ActiveSupport::TestCase
   test "belongs to" do
     should belong_to(:students)
   end
end

person reedandchrissy    schedule 13.02.2020    source источник
comment
Вы следовали инструкциям по интеграции Shoulda с RSpec, но это тест Minitest. Вы пытаетесь написать тест или спецификацию или просто не понимаете разницы? github.com/thoughtbot/shoulda-matchers#minitest   -  person max    schedule 13.02.2020


Ответы (1)


Наличие как каталога spec, так и каталога test может быть причиной вашей проблемы. ИМО, для каждого проекта должно быть только spec или test, а не оба.

Обычно тестовые файлы начинаются с включения файла test_helper.rb.

require 'test_helper'

Вместо test_helper у вас spec_helper.

Попробуйте переместить инициализатор Shoulda с spec/spec_helper.rb на test/test_helper.rb

person Aaron Breckenridge    schedule 13.02.2020