Является ли размер файла Excel слишком большим?
Если это так, это может быть причиной этой ошибки, использование памяти для генерации и чтения больших файлов Excel с poi очень велико.
Ваш синтаксис try правильный, ресурсы всегда будут закрыты.
Вы можете попробовать увеличить максимальный объем памяти для выполнения jvm. Используйте -Xmx2048m
при инициализации, например.
Интеграционные тесты называют db:test:prepare, который называет db:test:clone_structure, который называет db:structure:dump и db:test:purge
Можно записать собственную задачу
namespace :your_namespace do
Rake::TestTask.new(:integration => "db:migrate(if you want") do |t|
t.libs << "test"
t.pattern = 'test/integration/**/*_test.rb'
t.verbose = true
end
end
Установка self.use_transactional_fixtures = true
в Ваших интеграционных тестах было бы полезно также, если Вы не хотите должными быть перезагружать производственную копию между каждым выполнением теста.
Иначе выполненный интеграционный тест будет нащельная рейка данные с любыми изменениями, которые это вносит.
Я должен был добавить задачу Граблей aivarsak
namespace :dbtest do
Rake::TestTask.new(:integration) do |t|
t.libs << "test"
t.pattern = 'test/integration/**/*_test.rb'
t.verbose = true
end
end
и также удалите
fixtures :all
строка из test/test_helper.rb файла (или создают новый, на который Вы ссылаетесь в своих файлах интеграционного теста),
Чтобы заставить это работать, мне пришлось указать среду при вызове задачи rake, иначе она запустит миграции в базе данных разработки, а затем запустит тесты в тестовой базе данных; учитывая приведенный выше пример
namespace :dbtest do
Rake::TestTask.new(:integration => "db:migrate") do |t|
...
, я должен был выполнить такие тесты
rake environment RAILS_ENV=test dbtest:integration