В вашем data()
у вас есть continents_selected
вместо continent_selected
. Удалите S после континента, и это должно сработать.
Ваше Vue пыталось использовать переменную, которая не существует (из-за s
), именно поэтому произошла эта ошибка.
Не совсем автоматизирован, но как модифицировать свой код, чтобы повторно бросить исключения, когда они назывались в тесте?
Возможно, что-то вроде этого:
def foo
# do some stuff...
rescue
raise if ENV["RAILS_ENV"] == "test"
render :text => "Exception: #{$!}" # this could be any kind of custom render
end
Вы смотрели используя вызов assert_raise (exception1, exception2, ...) {block}
, а затем распечатать исключение из блока?
Какой метод вы используете? В ActionController есть два метода восстановления.
У меня есть это в моем базовом контроллере:
def rescue_action_in_public(exception)
response_code = response_code_for_rescue(exception)
status = interpret_status(response_code)
respond_to do |format|
format.html { render_optional_error_file response_code}
format.js { render :update, :status => status do |page| page.redirect_to(:url => error_page_url(status)) end}
end
end
Это отображает только пользовательские ошибки в производственном режиме.
Вам не нужно отключать блокировку восстановления. Используйте метод assert_raise (предложенный Скоттом) и в блоке вызовите метод, от которого ожидается исключение.
Например:
def test_throws_exception
assert_raise Exception do
raise_if_true(true)
end
end
Я думаю, что проще всего проверить, был ли вызван правильный рендеринг - или что-то еще, отличное от обычного, неисключительного случая.