我是一般的单元测试新手,但希望在MVC模式下实现它(使用PHP)。现在我不知道如何解决这个问题。如何对MVC类进行单元测试?
单元测试是否应该嵌入到框架中,或者我们只是创建一个名为tests的新文件夹并包含所有必需的类和单元测试?
总之,如果有一个模型M,它也与框架本身有一些耦合。因此为了测试模型,我应该在单元测试中包含框架的某些部分吗?
是否有一些很好的代码示例说明如何完成此操作。
我是一般的单元测试新手,但希望在MVC模式下实现它(使用PHP)。现在我不知道如何解决这个问题。如何对MVC类进行单元测试?
单元测试是否应该嵌入到框架中,或者我们只是创建一个名为tests的新文件夹并包含所有必需的类和单元测试?
总之,如果有一个模型M,它也与框架本身有一些耦合。因此为了测试模型,我应该在单元测试中包含框架的某些部分吗?
是否有一些很好的代码示例说明如何完成此操作。
是否应单元测试被内置到框架,或者我们只是创建一个新的文件夹,名为测试,并包括所有必要的类和单元测试每一个?
你应该为它创建一个单独的文件夹。出于性能和调试的原因,将测试生成代码混淆通常不是一个好主意。
因此,为了测试模型,我应该在单元测试中包含框架的某些部分吗?
越少越好。单元测试应该只需要很少的依赖关系。如果类A
取决于B
,则应该模拟B
以确保如果B
失败,则不会使A
失败。
单元测试(正确完成)的主要优点是它可以让您轻松找出问题所在。如果A
由于其B
依赖项而失败,则首先请看A
,,然后B
。同样,如果B
取决于C
和C
发生故障,您必须查看A
,B
和,然后C
。这几乎毁了单元测试的最大优点之一。如果所有测试都正确完成,C
中的故障将不会导致其他任何地方发生故障,而不是在C
中,因此您将有一个类来查找以解决问题。
要真正使你的代码错误验证,您可以结合使用单元测试PHP assertions:
$return = $this->addOne($some_param);
assert('$return == $some_param + 1');
顺便说一句,有单元测试MVC之间没有差别,如不是单元测试一般。
单元测试应该是MVC框架的一部分。例如,看看CodeIgniter用户指南的Unit Testing Class章节。
是否应单元测试被内置到 框架,或者我们只是创建一个新的文件夹 称为测试
如果您使用的是第三方框架,它通常会包括一些单元测试帮手,但是你会想把你自己的测试类放到一个单独的文件夹中,这样(例如)你可以推出一个你的软件发行版,但不包含它们。
包括所有必要的类和单元测试每一个?
您通常每个应用程序类都有一个测试类。所以,如果你有一个模型类M,你将有一个测试类M_Test(或者你采用的任何命名约定)。
如果你还不熟悉PHPUnit
,你会想要抓住它并阅读他们的文档。