2012-01-12 311 views
1

我需要对CodeIgniter进行单元测试。我试过CIUnit,但没有得到V1.7.2中设置的灯具。如何单元测试CodeIgniter代码

我尝试了纯PHPUnit,但无法创建模型类的存根,因为它继承了活动记录,并且抛出了找不到activerecord的错误。显然,没有控制器加载了activer record helper。

有没有办法在Codeigniter中进行单元测试。我知道简单的测试库,但与phpunit相比,它有多好。 还有什么办法可以做集成测试吗。

+2

短版:你不能,该笨框架防止核心部件的单元测试的控制器。由于您的代码是从这些核心组件(派生)扩展而来的,因此您的代码也会陷入困境,并且无法形成可测试的单元。 – hakre 2012-01-12 09:55:23

回答

2

FooStack是一个可以帮助你的附加组件。它包括灯具说明,并与1.7.2兼容(这是一个旧版本,BTW)。

http://www.knollet.com/foostack/

+0

谢谢,我试过foostack,并有一些障碍能够运行测试功能。尽管我还剩下很少的问题。如何测试使用$ _POST数据的函数。此外,为ViewAllTests提供的示例看起来很复杂,有没有简单的方法来测试单个视图。 – aeonsleo 2012-01-17 09:06:57

+1

由于我实际上并没有使用foostack,因此请多多关照一下这个建议,但是您应该可以使用本地PHP来设置您的测试中需要的$ _POST数组值。 – 2012-01-22 23:16:39

+0

丹的建议适用于此。在Foostack中,您设置您的POST数组,然后触发控制器方法。内置的CI帖子功能只需使用您设置的POST数组。抛出一堆Mock对象和一些Setup/Teardown,你很好走。 – willoller 2012-10-04 01:16:24