Тестирование изоляции моделей AR? - PullRequest
1 голос
/ 20 ноября 2011

Я пытаюсь реструктурировать спецификацию модели, чтобы протестировать ее изолированно (относиться к ActiveRecord как к стороннему), однако у меня возникают проблемы с загрузкой в ​​моей модели, чтобы я мог заглушить AR-материал ...

Итак, что я делал, так это:

app / model / city.rb:

class City < ActiveRecord::Base
  # ...
end

spec / model /city_spec.rb:

require 'spec_helper'
describe City do
  # ...
end

По умолчанию spec_helper загружает Rails, чего я и стараюсь избегать (медленно).Я пытался сделать это:

приложение / модель / city.rb:

require 'active_record'
class City < ActiveRecord::Base
  # ...
end

spec / model / city_spec.rb:

require 'spec_helper_lite'
describe City do
  # ...
end

... где spec_helper_lite содержит только require 'pry' (для отладки); не загружает Rails.Однако запуск спецификации с этим изменением и проверка City дает мне два разных результата.

Первый дает мне: City(id: integer, created_at: datetime, updated_at: datetime, name: string)

Последний дает мне: #<ActiveRecord::Aggregations::ClassMethods:0x3fc61647de40>

Это приводит к проблемам, когда я пытаюсь вызвать что-то вроде City.new: ActiveRecord::ConnectionNotEstablished: ActiveRecord::ConnectionNotEstablished

Что мне нужно сделать, чтобы загрузить мою модель City без загрузки Rails, чтобы я могзаглушить биты AR?

Я использую ruby 1.9.3 и rails 3.1.1.

1 Ответ

0 голосов
/ 07 декабря 2011

Вы пробовали смотреть на mock_model ?

Это действует как модель ActiveRecord, но не взаимодействует с базой данных, поэтому будет быстрее.

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