Как пояснили в комментариях, ОП нуждался в нем для отладки, а не для записи тестов.
Kernel#set_trace_func
позволяет перехватывать низкие события уровня, такие как воспитываются ошибка:
set_trace_func(proc do |event, *_|
puts 'Raised!' if event == 'raise'
end)
raise 'Oh, no!' rescue :foo
Вы можете запустить #set_trace_func
перед кодом вы пытаетесь отлаживать. Если исключение не было поднято, но рейк был зарегистрирован крюком - кто-то его спас.
Это может создать некоторый шум в зависимости от того, что вы выполняете. К счастью, вы можете фильтровать вниз файл и строку:
set_trace_func(proc do |event, file, line, *_|
if event == 'raise' && file == 'test.rb' && line == 42
puts "Raised on #{file}:#{line}!"
end
end)
Он даже дает переплета, так что вы можете упасть вниз отладчик:
require 'irb'
set_trace_func(proc do |event, *_, error_binding, _|
error_binding.irb if event == 'raise'
end)
def foo
bar = 42
raise 'Oh, no!' rescue :baz
end
foo
# Opens an irb
# > bar # => 42
Настройте приспособление так, что это повысит ошибка и убедитесь, что ошибка не протекала. – ndn
@ndn Как я могу поднять ошибку изнутри прибора? Btw, ошибка не в данных, а в самом коде .. – Magne
Посредством я не имел в виду крепления рельса, я имел в виду предварительные условия/среду, в которой вы запускаете свои тесты. Просто убедитесь, что все необходимое для повышения ошибки выполняется в настройке. – ndn