рельсы пост-тестовая ошибка модели - PullRequest
0 голосов
/ 14 мая 2018

Итак, это ошибка, которую я получаю

.F

Ошибка: PostTest # test_post_should_be_valid [/home/ubuntu/workspace/test/models/post_test.rb:9]:[«Пользователь должен существовать»]

Я не уверен, что означает «пользователь должен существовать», так как я уверен, что пользователь с идентификатором user_id существует.вот мой код

post_test.rb

require 'test_helper'

class PostTest < ActiveSupport::TestCase
  def setup
    @post=Post.new(user_id: "1",name:"ruby meetup")
  end

  test "post should be valid" do
    assert @post.valid?, @post.errors.full_messages
  end

end

post.rb

class Post < ApplicationRecord
belongs_to :user
 geocoded_by :address
after_validation :geocode, if: ->(obj){ obj.address.present? and obj.address_changed? }
reverse_geocoded_by :latitude, :longitude
after_validation :reverse_geocode


  has_many :rsvps
  has_many :users, through: :rsvps

  validates :name, presence: true






end

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

user_test.rb

require 'test_helper'

class UserTest < ActiveSupport::TestCase
  def setup
    @user=User.new(email:"fo30@hotmail.com", password: "h3h3123")
  end


  test "user should be valid" do
    assert @user.valid?, @user.errors.full_messages
  end
end

user.rb

class User < ApplicationRecord
  # Include default devise modules. Others available are:
  # :confirmable, :lockable, :timeoutable and :omniauthable
  devise :database_authenticatable, :registerable,
         :recoverable, :rememberable, :trackable, :validatable
         has_many :posts

          has_many :rsvps
          has_many :posts, through: :rsvps

          validates :email, presence: true





end

Любая помощь будет принята с благодарностью, поскольку я только недавно начал тестированиев рельсах.

1 Ответ

0 голосов
/ 14 мая 2018

User.new создает нового пользователя в памяти, но не в базе данных.У него не будет действительного значения id для заполнения user_id.

Попробуйте User.create!.

Далее, записи базы данных не распределяются между тестовыми прогонами.Rails пытается «проверить изоляцию» путем слияния записей после каждого теста.Таким образом, вашему PostTest требуется собственная копия User.create!.

. После того, как вы все заработаете, найдите общую тему "Испытательные устройства для рельсов" ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...