Направляющие ActiveSupport: Как утверждать, что ошибка повышена?

Я желаю протестировать функцию на одной из моих моделей, которая бросает определенные ошибки. Функция выглядит примерно так:

def merge(release_to_delete)
  raise "Can't merge a release with itself!" if( self.id == release_to_delete.id )
  raise "Can only merge releases by the same artist" if( self.artist != release_to_delete.artist   )
  #actual merge code here
end

Теперь я хочу сделать утверждение что, когда я вызываю эту функцию с параметром, который вызывает каждое из тех исключений, что исключения на самом деле выдаются. Я смотрел на документацию ActiveSupport, но я ничто не находил обещанием. Какие-либо идеи?

48
задан spilliton 10 August 2010 в 15:47
поделиться

1 ответ

Итак, модульное тестирование на самом деле не входит в активную поддержку. Ruby поставляется с типичной структурой xunit в стандартных библиотеках (Test :: Unit в ruby ​​1.8.x, MiniTest в ruby ​​1.9), а материал в activesupport просто добавляет к нему некоторые вещи.

Если вы используете Test :: Unit / MiniTest

assert_raise(Exception) { whatever.merge }

, если вы используете rspec (к сожалению, плохо документированный, но гораздо более популярный)

lambda { whatever.merge }.should raise_error

Если вы хотите проверить поднятое Исключение :

exception = assert_raises(Exception) { whatever.merge }
assert_equal( "message", exception.message )
101
ответ дан 7 November 2019 в 12:16
поделиться
Другие вопросы по тегам:

Похожие вопросы: