Технически следующее тестирует реализацию, а не поведение, но это, вероятно, достаточно хорошо, поскольку реальное поведение должно быть охвачено тестами основного языка ruby:
require 'minitest/autorun'
def quit
puts "Good bye!"
exit
end
describe 'quit' do
it 'ends the process' do
assert_raises SystemExit do
quit
end
end
end
Обратите внимание, что это необычный сценарий; как правило, было бы нецелесообразно когда-либо rescue
из SystemExit
, так как это может вызвать все виды странного поведения - например, этот тест на самом деле пройдет , если вы вручную убьете процесс во время его работы (и сам процесс не будет фактически завершен)!
Если бы вы использовали rspec
, то реализация была бы аналогичной:
RSpec.describe 'quit' do
it 'ends the process' do
expect { quit }.to raise_error(SystemExit)
end
end