Замедляет некоторые тесты, которые проходят или , не пройдя.Но влияние этой потери производительности полностью зависит от вашего конкретного набора тестов - поэтому вам нужно будет сравнить его с вашим собственным приложением, чтобы измерить разницу!
Вот исходный код для make_my_diffs_prtty!
:
def self.make_my_diffs_pretty!
require "pp"
define_method :mu_pp, &:pretty_inspect
end
Поэтому, игнорируя незначительную потенциальную потерю производительности из require 'pp'
, давайте рассмотрим влияние переопределения метода mu_pp
.
Например, давайте теперь посмотрим исходный код для diff
метода подтверждения :
def diff exp, act
expect = mu_pp_for_diff exp
butwas = mu_pp_for_diff act
result = nil
need_to_diff =
(expect.include?("\n") ||
butwas.include?("\n") ||
expect.size > 30 ||
butwas.size > 30 ||
expect == butwas) &&
Minitest::Assertions.diff
return "Expected: #{mu_pp exp}\n Actual: #{mu_pp act}" unless
need_to_diff
Tempfile.open("expect") do |a|
a.puts expect
a.flush
Tempfile.open("butwas") do |b|
b.puts butwas
b.flush
result = `#{Minitest::Assertions.diff} #{a.path} #{b.path}`
result.sub!(/^\-\-\- .+/, "--- expected")
result.sub!(/^\+\+\+ .+/, "+++ actual")
# ...
end
def mu_pp_for_diff obj
mu_pp(obj).gsub(/\\n/, "\n").gsub(/:0x[a-fA-F0-9]{4,}/m, ":0xXXXXXX")
end
Метод mu_pp
вызывается перед выводом результат неудачного теста.Он также используется как часть фактической проверки.
Кроме того, строка: return "Expected: #{mu_pp exp}\n Actual: #{mu_pp act}" unless need_to_diff
действует как повышение производительности : при сокращенном вводе diff будет «очевидно»потерпеть поражение.Однако, используя метод make_my_diffs_pretty!
, обратите внимание, что expect.size
и actual.size
теперь будут значительно больше - поэтому «полная проверка» будет проводиться чаще.