MiniTest: как проверить ключевое слово выхода - PullRequest
0 голосов
/ 05 сентября 2018

У меня есть метод 'выйти':

def quit
  puts "Good bye!"
  exit 
end

То, что я пытаюсь сделать, это сделать мини-тестовое утверждение, что метод quit действительно завершается, ничего из того, что я пробовал, не работает. Ищете вход. Заранее спасибо!

Ответы [ 2 ]

0 голосов
/ 05 сентября 2018

Технически следующее тестирует реализацию, а не поведение, но это, вероятно, достаточно хорошо, поскольку реальное поведение должно быть охвачено тестами основного языка 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
0 голосов
/ 05 сентября 2018
require "minitest/autorun"

def quit_42
  puts "Good bye!"
  exit 42
end

describe :exit_code do
  it "returns 42" do
    err = -> { quit_42 }.must_raise SystemExit
    err.status.must_equal 42
  end
end
...