Тестирование делим с минитест - PullRequest
3 голосов
/ 28 декабря 2011

Я сделал этот код, и я пытаюсь проверить его с помощью minitest, но, похоже, я не использую правильный синтаксис для исключения: /

def my_method(a,b=10)
  begin
    a/b
  rescue
    raise 'bla'
  end
end

describe 'my test' do
  it "must divide" do
    my_method(6,3).must_equal(2)
  end

  it "can't divide by zero and raise bla" do
    my_method(6,0).must_raise 'bla'
  end

  it "must divide by 10 if there is only one arg" do
    my_method(10).must_equal(1)
  end
end

Вывод:

Параметры запуска: --seed 30510

Запуск тестов:

.. E

Завершенные тесты за 0,001000 с, 3000,0000 тестов/ s, 2000.0000 утверждений / s.

1) Ошибка: test_0002_can_t_divide_by_zero_and_raise_bla (мой тест): RuntimeError: bla essai.rb: 9: в my_method' essai.rb:19:in test_0002_can_t_divide_by_zero_and_by_zero_10 * * 3, 0 сбоев, 1 ошибок, 0 пропусков

Второй тест выдает мне ошибку, может кто-нибудь мне помочь?

1 Ответ

8 голосов
/ 28 декабря 2011

Вы должны вызывать must_raise для процедуры, а не для результата вызова метода:

require 'minitest/autorun'

def my_method(a,b=10)
  begin
    a/b
  rescue
    raise 'bla'
  end
end

describe 'my test' do
  it "must divide" do
    my_method(6,3).must_equal(2)
  end

  it "can't divide by zero and raise bla" do
    div_by_zero = lambda { my_method(6,0) }
    div_by_zero.must_raise RuntimeError
    error = div_by_zero.call rescue $!
    error.message.must_equal 'bla'
  end

  it "must divide by 10 if there is only one arg" do
    my_method(10).must_equal(1)
  end
end
...