Как протестировать модель с помощью Minitest и без базы данных?

Я использую rails 4.2.1 и ruby ​​2.2.1 в своем приложении. Таким образом, автоматически добавляется минитест версии 5.1. В моем приложении нет базы данных. С базой данных я могу протестировать модель. Как протестировать модель без базы данных?

Я создал пользовательскую модель:

class User
  include ActiveModel::Model
end

пользователи.yml:

one:
  firstName: Avi
  email: [email protected]

user_test.rb:

require 'test_helper'

class UserTest < ActiveSupport::TestCase      
  test "the truth" do 
    user = users(:one)
    assert true
  end
end

Здесь я получаю сообщение об ошибке: Undefined methods users. Я получаю правильные данные, если daabase существует. Я даже пытался добавить include ActiveModel::Lint::Tests, но все равно получал ту же ошибку. Может ли кто-нибудь помочь мне в этом?

Спасибо


person Avinash    schedule 04.09.2015    source источник


Ответы (1)


Класс ActiveSupport::TestCase ожидает, что соединение с базой данных активно. Вероятно, вы захотите переключить его на Minitest::Test, но это означает, что вы не можете использовать метод фиксации users для извлечения записи из базы данных.

require 'test_helper'

class UserTest < Minitest::Test
  def test_sanity
    user = User.new
    user.first_name = "Avi"
    user.email = "[email protected]"
    assert user
  end
end
person blowmage    schedule 04.09.2015
comment
Немного сложнее, я нахожу. Вам нужно вручную импортировать минитест, а не rails/test_help по умолчанию в вашем test_helper.rb... Сообщит больше, когда я разберусь с этим... - person ericpeters0n; 21.04.2016