2009-11-13 87 views
3

我正在工作中处理一个巨大的项目。我们有大约200个数据库表,因此有大量的模型,动作等等。如何对企业symfony项目进行单元测试?

我应该如何开始为此编写测试?

我最大的问题是,用symfony你可以测试石灰框架,这是伟大的。但是大部分代码都是用数据库写入,删除或做其他事情。那么如何测试模型而不与数据库交互?

我想做单元测试,因为我的代码中存在一些错误,通过重构函数,但我甚至不知道如何启动。文档中的示例仅涵盖一个非常小的功能。当动作文件超过700行代码时,它看起来如何?

回答

2

伟大的问题..我亲身遇到过这个地方。

这是我到目前为止已经发现:

1)获取一个开发数据库..做了督促数据库上不考! 2)它可能听起来很陈腐,但从小而简单。

3)我不知道你的领域是什么(电子商务数据库,联系人数据库等),但说它是一个电子商务数据库。首先测试创建一些订单模型并保存它们。也许在测试工具中重新创建一个真正的订单,以便保存到数据库中。现在,您可以快速创建1000个订单来运行测试..方式比手动进行网上结帐更快。为了获得最大利益,请创建一个您目前正在处理的某些内容的模型,以便在测试过程中使用它。

4)现在开始测试你的模型提供的各种方法。再次坚持与您目前正在尝试修复/使用的内容相关的内容。不要担心测试所有内容,只需测试一些内容,并确保可以重复测试。

5)需要测试控制器?酷,现在你有一个模型来处理你不关心搞乱,因为它不是真实的...需要一些变化?创建更多测试套件来构建不同的模型以满足您的各种需求。模型可能很复杂,但您应该能够编写一些测试函数来创建各种模型的变体。然后对你的控制器运行...

6)继续采取代码覆盖。

警告:小心是唯一一个运行单元测试..你会很快成为最有效的问题解决者,但人们然后将尝试让你修复一切...

0

在单个控制器操作中有700行?测试可以通过其他方式暴露自己代码中的问题,而不是显而易见的断言。如果出于某种原因难以测试某些内容,则代码有问题。

当开始测试一个大小的项目时,焦点应该是代码覆盖率。起初不要太担心边缘案例(除非情况需要)。当开始测试项目时,我喜欢从模型开始,因为它们是最直接的。从那里继续进行控制器测试,看看它是如何发展的。

相关问题