【问题标题】:Elixir assert_raise doesn't catch exceptionsElixir assert_raise 不捕获异常
【发布时间】:2016-10-08 18:55:31
【问题描述】:

我写了这个测试用例:

assert_raise ArgumentError, myFn(a,b)

但它并没有按照我期望的方式进行评估。 myFn 引发 ArgumentError (do: raise ArgumentError),但它没有被 assert_raise 捕获。

文档中的示例运行良好:

assert_raise ArithmeticError, fn ->
  1 + "test"
end

来自文档:

assert_raise(exception, function)
断言在function 执行期间引发了exception。返回获救的异常,否则失败

我猜在我的测试用例中,首先评估参数。但是我应该怎么写呢?

【问题讨论】:

    标签: elixir ex-unit


    【解决方案1】:

    将函数调用包装在函数中是可行的方法。

    assert_raise ArgumentError, fn ->
      myFn(a, b)
    end
    

    我希望assert_raise 进行函数调用,但它需要一个函数。

    【讨论】:

    • 是的,assert_rise 不是宏,而是普通函数:github.com/elixir-lang/elixir/blob/… 这意味着如果您只传递myFn(a, b),它将被评估并将值传递给assert_rise已经太晚了:)
    猜你喜欢
    • 2010-12-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-17
    • 2022-12-02
    • 1970-01-01
    相关资源
    最近更新 更多