2014-08-28 73 views
0

我使用Codeception与REST和Laravel模块。当测试为红色时,Codeception不提供异常信息

当我运行vendor/bin/codeception run并且由于应用程序中存在异常而导致测试为红色时,命令行中未提供任何信息。

所以我知道东西是错的,但不知道究竟是什么是错的。更

一点点的细节:
1)当试验期望不被满足,正被显示的错误信息就好(例如我期望的结果是JSON但HTML已被代替返回)
2)但是,例如,如果我尝试将某些内容插入到不存在的数据库字段中,我只会在命令行中获取FAIL,而没有关于失败原因的信息。

请注意,此类错误是可捕获的异常,而不是致命错误,所以我不明白为什么Codeception不能显示错误消息。

要找到什么确切的问题,我有两个选择:
1)try-catch块裹测试(所以我抓住和用手工调试一切) 2)请使用浏览器通过手的请求并看到输出

显然,这两个“解决方案”是不可接受的。

我错过了什么,是否有这个问题的一个很好的解决方案?

谢谢!

回答

0

有时,测试框架无法访问信息,因为应用程序框架没有提供这些信息。致命错误可能会“异常地结束”您的应用程序,并不能确定哪些人期望得到简单的异常。

我刚才在这些情况下,做的是看日志文件:

/var/www/myapp/app/storage/logs/laravel.log 

/var/log/nginx/*.log 
+0

嗨安东尼奥。感谢您的答复。 但这不违反TDD的整体思路吗?如果测试没有提供关于如何使它们变绿的信息,我如何在代码之前编写测试? 顺便说一句,数据库异常的例子不是一个致命的错误(我甚至可以在我的测试中手工捕获这个异常) – 2014-08-28 19:56:12

+0

是的,但如果你违反操作系统(内存,磁盘,文件权限,web服务器配置......),你的工具无法为你做任何事情,不幸的是,这些“规则”并不是每一次都有效。 :) – 2014-08-28 19:59:13