如何在 minitest 中测试异常?
How do I test for an exception in minitest?
我正在使用 Rails 5 和 minitest。如何正确捕获调用控制器方法引发的异常?我以为
assert_raises
是关键。不过,我有这个方法
def show
@line = Line.find(params[:id])
end
虽然我认为我正在捕获一个 REcordNotFoundError 但写
# Simple test to verify we get the show page when we
# invoke the page with a valid ID
test "get show page with invalid line id" do
invalid_line_id = -1
assert_raises ActiveRecord::RecordNotFound get line_path(invalid_line_id)
end
然后 运行 结果是
# Running:
.E
Error:
LinesControllerTest#test_get_show_page_with_invalid_line_id:
ActiveRecord::RecordNotFound: Couldn't find Line with 'onestop_id'=-1
app/controllers/lines_controller.rb:7:in `show'
test/controllers/lines_controller_test.rb:31:in `block in <class:LinesControllerTest>'
错误。在我的测试中捕获错误的正确方法是什么?
assert_raises
需要一个块 - 您刚刚调用了代码。
试试这样的东西:
assert_raises ActiveRecord::RecordNotFound do
get line_path(invalid_line_id)
end
我正在使用 Rails 5 和 minitest。如何正确捕获调用控制器方法引发的异常?我以为
assert_raises
是关键。不过,我有这个方法
def show
@line = Line.find(params[:id])
end
虽然我认为我正在捕获一个 REcordNotFoundError 但写
# Simple test to verify we get the show page when we
# invoke the page with a valid ID
test "get show page with invalid line id" do
invalid_line_id = -1
assert_raises ActiveRecord::RecordNotFound get line_path(invalid_line_id)
end
然后 运行 结果是
# Running:
.E
Error:
LinesControllerTest#test_get_show_page_with_invalid_line_id:
ActiveRecord::RecordNotFound: Couldn't find Line with 'onestop_id'=-1
app/controllers/lines_controller.rb:7:in `show'
test/controllers/lines_controller_test.rb:31:in `block in <class:LinesControllerTest>'
错误。在我的测试中捕获错误的正确方法是什么?
assert_raises
需要一个块 - 您刚刚调用了代码。
试试这样的东西:
assert_raises ActiveRecord::RecordNotFound do
get line_path(invalid_line_id)
end