Раньше я тоже работал с Hibernate. Способ ActiveRecord сильно отличается от спящего режима. Вы должны освободить свой разум, к лучшему или к худшему. В Java и Hibernate у вас часто есть совокупный корень и граф объектов. Как правило, графы объектов и кодовая база в ruby также меньше. Я не знаю вашего конкретного случая, поэтому я буду осторожно действовать, но я предупреждаю вас, чтобы вы подобрали рубин и рельсы к своим привычкам Java.
Вы можете использовать пользовательские каталоги с rspec для организации таким образом, чтобы это имело смысл для вас и вашей команды.
#spec/queries/my_custom_search_spec.rb
require 'spec_helper'
describe MyModel do
it "should do this query and return X" do
subject.some_defined_scope_search.should == "something"
end
end
и у вас могут быть подкаталоги, автоматически выбираемые rspec, например spec/models/account/..
Спецификация будет автоматически подхвачена rake spec
или rspec spec
. Я только что написал простой пример выше, так как я не знаю ваш случай. Вы определяете области с запросами или определяете специализированные методы?
Я настоятельно рекомендую отказаться от осветительных приборов (так же, как и для вставок - анти-паттерн, для меня) для чего-то более перерабатываемого, например, фабрики. Мне нравится factory_girl . Это позволит вашему приложению развиваться более гибко, ИМО.
EDIT:
добавив мой spec_helper.rb с настройками для включения / выключения автоматической очистки
RSpec.configure do |config|
require 'database_cleaner'
config.add_setting :skip_database_clean
config.skip_database_clean = false
config.before(:suite) do
DatabaseCleaner.strategy = :truncation
end
config.before(:each) do
end
config.after(:each) do
MongoMapper.database.collections.each(&:remove)
DatabaseCleaner.clean unless config.skip_database_clean
end
Я добавляю переменную skip_database_clean
, чтобы я мог включить / отключить автоочистку после каждой спецификации (каждое "это").
before :all do
@an_object = some_expensive_test_buildup
RSpec.configuration.skip_database_clean = true
end
after :all do
RSpec.configuration.skip_database_clean = false
DatabaseCleaner.clean
end