Использование огурца с промежуточной базой данных без усечения и транзакций - PullRequest
0 голосов
/ 20 октября 2010

У нас есть проект Ruby on Rails 2.3.8, где данные почти исключительно предназначены только для чтения. Мы хотели бы написать приемочные тесты, которые используют промежуточную базу данных (копия рабочей базы данных)

Таким образом, мы не хотим использовать транзакции или усечение таблиц базы данных до или после функций и сценариев.

Возможно ли это?

1 Ответ

0 голосов
/ 15 ноября 2010

Мое решение состояло в том, чтобы переключить DatabaseCleaner на стратегию очистки транзакций в functions / support / env.rb

if defined?(ActiveRecord::Base)
  begin
    require 'database_cleaner'
    DatabaseCleaner.strategy = :transaction
  rescue LoadError => ignore_if_database_cleaner_not_present
  end
end

И обезьянить патч DatabaseCleaner, добавив функции / support / database_cleaner_patch.rb с

module DatabaseCleaner::ActiveRecord
  #for now we will disable transactions 
  class Transaction

    def start
    end

    def clean
    end
  end
end

У нас есть 3 базы данных в нашем проекте, с запросами между базами данных, поэтому мы не можем использовать транзакции, в противном случае я бы не стал вносить обезьяны в патч DatabaseCleaner

...