У Rails Minitest есть много возможностей для тестирования модели ActiveRecord :: UnknownPrimaryKey Error - PullRequest
0 голосов
/ 23 октября 2019

Когда я пытаюсь запустить minitest с simpleCov, я хочу, чтобы модель таблицы соединений UserMessages была покрыта.

У меня есть установочный прибор, чтобы выполнить тестирование и продолжать выдавать ошибку ActiveRecord::UnknownPrimaryKey. Это ожидаемо, так как у меня нет первичного ключа в таблице UserMessage.

Есть ли способ обойти эту ошибку и также охватить модель UserMessage?

МОДЕЛИ:

class User < ApplicationRecord
  has_and_belongs_to_many :messages, join_table "users_messages"
end

class Message < ApplicaitonRecord
  has_and_belongs_to_many :users, join_table: "users_messages"
end

class UserMessage <ApplicationRecord
  self.table_name = "users_messsages"
  belongs_to :user
  belongs_to :messages
end

ИСПРАВЛЕНИЯ:

Пользователь:

default:
  name: test

Сообщение:

default:
  message: hello world!
  users:
   - default

UserMessage:

default:
  user: default
  message: default

ТЕСТ:

require "test_helpers"
class UserMessageTest < ActiveSupport::TestCase
 def setup
  @user_message = user_message(:default) # The error happens here: ActiveRecord::UnknownPrimaryKey:\ 
                                         # Unknown primary key for table users_messages in model \      
                                         # UserMessage
 end

 test "is valid" do
  assert @user_message.valid?, "Should be valid"
 end
end

1 Ответ

0 голосов
/ 24 октября 2019

Я только что понял, насколько это плохо.

Я просто не мог использовать прибор для решения проблемы.

require "test_helper"
UserMessageTest < AcitveSupport::TestCase
  def setup
   @user_message = UserMessage.new(user_id: User.first.id,
                                   message_id: Message.first.id)

  end

  test "could save successfully" do
   assert @user_message.save
  end
end

И тест пройден!

...