Сегодня я пытаюсь ускорить мой набор тестов. Мое приложение в основном является большим интегратором между системами, поэтому в большинстве моих тестов используются макеты Савона, подобные этому
RSpec.describe MyClass do
describe 'a function which sends a SOAP request'do
before do
savon.mock!
savon.expects(action).returns(File.read("spec/fixtures/somefile.xml"))
end
after { savon.unmock! }
it 'checks something'
it 'checks something else'
it 'checks something more'
it 'checks something different'
end
end
Очевидно, что большинство этих тестов довольно медленные, так как они загружают файл. Более того, иногда эти макеты находятся во вложенных контекстах, чтобы объединить несколько общих примеров, что увеличивает количество нагрузок.
Думая об ускорении некоторых из этих тестов, я попытался уменьшить количество загрузок файлов, перемещая их за пределы блока before
. как это
RSpec.describe MyClass do
describe 'a function which sends a SOAP request'do
the_file = File.read("spec/fixtures/somefile.xml")
before do
savon.mock!
savon.expects(action).returns(the_file)
end
after { savon.unmock! }
it 'checks something'
it 'checks something else'
it 'checks something more'
it 'checks something different'
end
end
Действительно, скорость не меняется; У меня есть блоки из 96 тестов с кратными, вложенными контекстами и проверками, и я не набрал даже 0,01 секунды. Итак, мои вопросы:
- Я предполагал, что блок
before
загружает файл для каждого его
право?
- Есть ли в Rspec или Savon какой-нибудь кеш?
- Как я могу отследить, сколько раз я действительно загружаю файл моего примера?
Спасибо!