如果 RSpec 失败则引发异常

Raise exception if RSpec fails

我想编写 rake 脚本,它在我的应用程序中运行所有 RSpec 测试。如果任何测试失败,我想在任务中抛出一个异常(稍后我将在 NewRelic 警报系统中捕获这个异常——我也将它用于其他任务)。

可以吗?

首先,您不需要引发异常来让 newrelic 知道它。您可以通过直接将错误详细信息发布到他们的 api 来让 newrelic 知道:https://docs.newrelic.com/docs/agents/ruby-agent/troubleshooting/sending-new-relic-handled-errors

notice_error(exception, options = { })

其中 exception 可以是异常对象(例如 StandardError.new)或消息。

此外,您可以省略所有这些异常业务并检查 rspec 命令行工具的退出代码。如果测试为绿色,则它将为零。如果存在错误,则它不会为零。像这样

if system('rspec spec') # return true if command was successful, false otherwise
  # if green
else
  # if red
end