Короче говоря, я хочу убрать отображение функций ActiveRecord :: Migration.create_table и drop_table, которые я использую в файле спецификации, как я могу это сделать?
(Я сам ответил, но все же считаю хорошей идеей опубликовать его, потому что в Rails не хватает документации по этому вопросу)
Более длинная версия:
Я использую Миграции в своем Rspec на приложении Rails и хотел удалить сообщения Миграции.
Я делаю это, потому что я создаю временные классы, наследующие ApplicationRecord, и не уверен, что библиотечная часть моего приложения на Rails работает с такими элементами (в тестах, которые мне нужно проверить, это работает на Hash и ApplicationRecord).
Только для примера, моя библиотека вычисляет среднее значение по группам значений, хранящихся в записях.
В поддержку спецификации я добавляю файл model_average.rb, содержащий:
# frozen_string_literal: true
# migration for the model
def model_average_up
ActiveRecord::Migration.create_table :model_average_data do |t|
t.integer :v1
t.float :v2
end
ActiveRecord::Migration.create_table :model_average_acc_data do |t|
t.float :avg_v1
t.integer :count_v1
t.float :avg_v2
t.integer :count_v2
end
end
def model_average_down
ActiveRecord::Migration.drop_table :model_average_data
ActiveRecord::Migration.drop_table :model_average_acc_data
end
# Test model to compute average on it
class ModelAverageDatum < ApplicationRecord; end
# Test model containing average
class ModelAverageAccData < ApplicationRecord
def eq?(obj)
avg_v1 == obj.avg_v1 && count_v1 == obj.count_v1 && avg_v2 == obj.avg_v2 && count_v2 == obj.count_v2
end
end
В файле спецификации библиотеки, в before(:context)
я называю model_average_up
, а в after(:context)
я называю model_average_down
.
Во время выполнения rspec он отображает классические выходные данные миграции в середине точек или в формате документации теста:
-- create_table(:model_average_data)
-> 0.0059s
-- create_table(:model_average_acc_data)
-> 0.0044s
Я хочу удалить этот вывод. Возможно ли это?