0

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

4

1 回答 1

1

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

我相信您需要做的第一件事是更好地分离您的关注点。现在你正在做的,至少对我来说,是一种代码味道......意味着一些事情是不对的!

我是怎么得出这个结论的?

好吧,你问的问题以及你是如何回答的。您要问的问题是:

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

您的答案:

“从控制器视图测试它”

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

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

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

此时,您应该有一个经过适当单元测试的模型操作,并且关注点被正确分离

话虽这么说,如果您感觉超级勇敢并希望从各个角度测试您的代码,那么请务必设置一个控制器测试以确保操作正确执行。设置 Web 测试以确保整个包协同工作。

不过,首先,将您的担忧分开。

于 2011-06-20T17:28:14.340 回答