CakePHP SimpleTest - 控制器测试与Web测试

时间:2011-06-09 09:51:33

标签: unit-testing model-view-controller cakephp simpletest

我希望使用SimpleTest在CakePHP(1.3)中测试基本的CRUD操作 例如,我希望添加一条新记录,并确保在验证失败时收到错误消息,如果保存顺利,则会收到新记录。
是否更好地将这些测试编写为(1)相关操作的控制器测试(例如add()),或者(2)Web测试,使用$ this-> post()或$ this-> setField() ?

1 个答案:

答案 0 :(得分:1)

这是一个老问题,但仍然没有答案,所以我会试一试......

我认为您需要做的第一件事就是更好地区分您的顾虑。现在你正在做的事情,至少对我来说,是code smell ...意思是有些不对劲!

我是如何得出这个结论的?

那么,你问的问题以及你是如何回答的。你问的问题是:

  

“我应该如何测试模型的功能?”

你的回答:

  

“从控制器视图”进行测试

所以,我要做的第一件事是在适当的模型中设置一个方法来做你想要的。写出您认为需要的代码。保存记录并根据您提出的任何条件陈述返回您正在寻找的相应值。

之后我会设置一些灯具,这样你就可以测试一些数据了。您可以在CakePHP手册中了解更多关于CakePHP灯具的信息以及如何创建它们,http://book.cakephp.org/view/1201/Preparing-test-data (在未来的项目中,我会首先制作灯具,但这仅仅是个人喜好)

设置好灯具后,您可以继续测试新的模型方法。在我看来,测试模型是CakePHP中最容易测试的。我不会在这里详细介绍,只是因为CakePHP手册http://book.cakephp.org/view/1207/Testing-models有很多关于如何测试模型的信息。

此时,您应该进行正确的单元测试模型操作,关注点正确分离

如果您感觉超级精力充沛并希望从各个角度测试代码,那么请设置控制器测试以确保操作正确执行。设置Web测试以确保整个程序包一起工作。

首先,请将您的疑虑分开。