Проверка утверждения модели Ruby On Rails не удалась - PullRequest
0 голосов
/ 21 мая 2018

В настоящее время изучает ROR по учебному плану проекта Odin.В рамках «ПРОЕКТА: Построение с активной записью» я настроил три базовые модели: Пользователь, Пост, Комментарии.

В обоих постах и ​​комментариях мой базовый тест «Пост / Комментарии действителен» не проходит (ложь, ожидая правдивости), но все конкретные тесты пройдены, например, код для PostTest:

require 'test_helper'

class PostTest < ActiveSupport::TestCase
  # test "the truth" do
  #   assert true
  # end

  def setup
    @post = Post.new(title: "Hello World", body: "Hello world, it's nice to 
meet you", user_id: 1)
  end

  test "Post is valid" do
    assert @post.valid?
  end

  test "Post title is not blank" do
    @post.title = ""
    assert_not @post.valid?
  end

  test "Post title is less than 40 char" do
    @post.title = "a"*51
    assert_not @post.valid?
  end

  test "Post body is not blank" do
    @post.body = ""
    assert_not @post.valid?
  end

 test "Post has user_id" do
   @post.user_id = ""
   assert_not @post.valid?
 end
end

Причина, по которой я запутался, заключается в том, что если я использую консоль rails, чтобы вручную создать то же сообщение, что и в #setup вышетогда метод valid? правильно возвращает true.Кроме того, настройка пользовательской модели с точно таким же набором тестов #setup и user is valid проходит нормально.Единственное отличие, которое я вижу, состоит в том, что пользователь has_many :posts, где в качестве сообщений belong_to :user

Для ссылки модель сообщения:

class Post < ApplicationRecord
  validates :title, presence: true, length: {maximum: 40}
  validates :body, presence: true
  validates :user_id, presence: true

  belongs_to :user 
  has_many :comments

end

1 Ответ

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

Используете ли вы приборы для своих пользователей или откуда вы знаете, что существует запись пользователя с идентификатором 1?

Если вы используете приборы, вам нужно создать пользователя в настройках:

def setup
  user = users(:default_user)
  @post = Post.new(
    title: "Hello World", 
    body: "Hello world, it's nice to meet you", 
    user: user
  )
end

Подробнее о светильниках: http://guides.rubyonrails.org/testing.html#the-low-down-on-fixtures

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