问题
I wrote this test case:
assert_raise ArgumentError, myFn(a,b)
but it does not evaluate in the way I'd expect. myFn raises an ArgumentError (do: raise ArgumentError), but it is not caught by assert_raise.
The example in the docs works just fine:
assert_raise ArithmeticError, fn ->
1 + "test"
end
From the documentation:
assert_raise(exception, function)
Asserts theexceptionis raised duringfunctionexecution. Returns the rescued exception, fails otherwise
I'm guessing that in my test case, the arguments are evaluated first. But how should I've written it?
回答1:
Wrapping the function call in a function is the way to go.
assert_raise ArgumentError, fn ->
myFn(a, b)
end
I expected assert_raise to take a function call, but it takes a function.
来源:https://stackoverflow.com/questions/37703632/elixir-assert-raise-doesnt-catch-exceptions