0

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

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

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

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

4

1 回答 1

0

您应该在功能测试中明确检查每个操作的响应,尝试执行以下操作:

获取:索引 assert_response :成功

您应该始终对响应有某种形式的断言。当操作应该重定向时,您使用 assert_redicted_to

于 2010-10-07T02:35:05.257 回答