Ruby on rails Rails功能测试未捕获/获取异常

Ruby on rails Rails功能测试未捕获/获取异常,ruby-on-rails,exception-handling,functional-testing,Ruby On Rails,Exception Handling,Functional Testing,前几天在运行我的一个应用程序的功能测试时,我在代码中遇到了一个错误,导致了路由错误。我的功能测试是加载一个页面,并在该页面中创建一个链接到一个没有有效路径的页面。但是,异常的具体原因并不是问题所在——问题是该异常没有传递回我的测试。我知道发生异常的唯一原因是因为我碰巧在test.log文件中注意到它。简而言之,考试通过了,但我认为那应该算作失败 这让我很困惑。我试着把我的测试代码放在一个assert\u nothing\u引发的块中,但它仍然通过了 进一步挖掘,我逐渐意识到,我的应用程序引发的任

前几天在运行我的一个应用程序的功能测试时,我在代码中遇到了一个错误,导致了
路由错误
。我的功能测试是加载一个页面,并在该页面中创建一个链接到一个没有有效路径的页面。但是,异常的具体原因并不是问题所在——问题是该异常没有传递回我的测试。我知道发生异常的唯一原因是因为我碰巧在
test.log
文件中注意到它。简而言之,考试通过了,但我认为那应该算作失败

这让我很困惑。我试着把我的测试代码放在一个
assert\u nothing\u引发的
块中,但它仍然通过了

进一步挖掘,我逐渐意识到,我的应用程序引发的任何异常都会被默默地记录下来,不会导致测试失败。这是Rails中的故意行为,还是听起来好像我有什么设置错误

编辑:
我认为问题可能在于Rails捕获并处理异常(这样当从浏览器发送请求时,它可以显示熟悉的堆栈跟踪页面)。我可以理解为什么这在
开发
环境中有用,但在
测试
环境中肯定不有用…?

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

获取:索引 断言:成功


您应该始终为响应提供某种形式的断言。当动作应该重定向时,您使用assert\u redicted\u to

帮助我找到Jeremy。问题似乎在于功能测试和集成测试处理异常的方式不同。(我有点误解了这个问题——实际上是一个集成测试失败了。)如果在集成测试中调用
get'/boom'
,您不会得到异常,只有
500
响应。但是,在功能测试中,
get
本身会引发异常。奇怪。啊,很高兴我能帮上忙。我并不知道集成测试,很高兴知道