测试引发的异常

Testing for exceptions being raised

我是 ruby 的新手。尝试编写一个在引发异常时通过的测试,例如:

 def network_data_unavailable
    assert_raise StandardError, NetworkSim.sim(totalUse, 3, "five")
  end

这些输入会引发 StandardError,但我的测试仍然失败。对我在这里遗漏的内容有帮助吗?

首先,我认为你要找的方法是assert_raises,而不是assert_raise。然后你需要正确调用它 by giving it a block:

#assert_raises(*exp) ⇒ Object

Fails unless the block raises one of exp. Returns the exception matched so you can check the message, attributes, etc.
[...]

assert_raises(CustomError) { method_with_custom_error }

您想说:

assert_raises StandardError do
  NetworkSim.sim(totalUse, 3, "five")
end

以便 assert_raises 可以在设置异常处理后调用该块。按照你调用它的方式,NetworkSim.sim 将在构建 assert_raises 的参数列表时被调用,并且在 assert_raises 可以做任何事情来捕获它之前将引发异常。