Rails功能测试没有捕获/获取异常

时间:2010-10-06 18:33:01

标签: ruby-on-rails exception-handling functional-testing

当我运行我的应用程序的某个功能测试时,我在我的代码中遇到导致RoutingError的错误。我的功能测试是加载页面,在该页面中,它创建了一个指向没有有效路径的页面的链接。异常的具体原因不是重点 - 问题是这个异常没有传回我的测试。我知道发生异常的唯一原因是因为我碰巧在test.log文件中注意到它。简而言之,测试传递,但我认为这应该算作失败!

这让我很困惑。我尝试将我的测试代码放在assert_nothing_raised块中,但它仍然通过。

进一步挖掘我开始意识到我的应用程序抛出的任何异常被静默记录并且不会导致测试失败。这是Rails中的故意行为还是听起来我设置错了?

编辑: 我认为问题可能是Rails捕获并处理异常(因此当从浏览器发送请求时它可以呈现熟悉的堆栈跟踪页面)。我可以看到为什么这在development环境中有用,但肯定不在test环境中......?

1 个答案:

答案 0 :(得分:0)

您应该明确检查功能测试中每个操作的响应,尝试做这样的事情:

获取:索引 assert_response:success

你应该总是对这种反应有某种形式的断言。当操作应该重定向时,使用assert_redicted_to