我希望使用SimpleTest在CakePHP(1.3)中测试基本的CRUD操作
例如,我希望添加一条新记录,并确保在验证失败时收到错误消息,如果保存顺利,则会收到新记录。
是否更好地将这些测试编写为(1)相关操作的控制器测试(例如add()),或者(2)Web测试,使用$ this-> post()或$ this-> setField() ?
答案 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测试以确保整个程序包一起工作。
首先,请将您的疑虑分开。