如何对企业symfony项目进行单元测试?

时间:2009-11-13 23:50:13

标签: php unit-testing symfony1

我正在为我的工作做一个大项目。我们有大约200个数据库表,因此有大量的模型,操作等。

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

我最大的问题是,使用symfony你可以使用石灰框架进行测试,这很棒。但是大多数代码使用数据库写入,删除或执行其他操作。那么如何在不与数据库交互的情况下测试模型呢?

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

2 个答案:

答案 0 :(得分:2)

很棒的问题..我个人碰到了这个地方。

这是我到目前为止所发现的:

1)获取开发数据库..不要在prod数据库上测试!

2)这可能听起来很陈旧,但从小而简单开始。

3)我不知道你的领域是什么(电子商务数据库,联系人数据库等......)但是它说它是一个电子商务数据库。首先测试创建一些订单模型并保存它们。也许在测试工具中重新创建一个真正的订单,以便保存到DB。现在,您可以快速创建1000个订单来运行测试...比手动执行Web检查更快。为了获得最大收益,请创建一个当前正在处理的事物的模型,以便在测试期间使用它。

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

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

6)继续采用代码覆盖率。

警告:小心成为唯一一个运行单元测试的人。您将很快成为最有效的问题解决者,但人们会尝试让您解决所有问题......

答案 1 :(得分:0)

单个控制器动作中的700行?测试有一种方法可以通过除明显断言之外的其他方式在您自己的代码中公开问题。如果出于某种原因难以测试某些东西,那么代码就会出现问题。

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