Zend framework 即使使用控制器进行测试,模型也需要单独测试吗

Zend framework 即使使用控制器进行测试,模型也需要单独测试吗,zend-framework,phpunit,Zend Framework,Phpunit,我已经编写了一个模型来添加用户。 然后我编写了一个控制器,在模型中调用该方法来添加用户 之后,我编写了phpunit测试来全面测试该控制器。因为我在控制器中调用模型来添加用户,用户也在测试模型 我的问题是,我是否也需要为模型创建一个单独的测试?即使是在控制器中调用,我也在完全测试控制器?理想情况下,在编写单元测试时,每个代码单元(通常是一个类)都是单独测试的。这意味着有一个测试用例彻底测试您的模型类,另一个测试用例测试您的控制器。如果模型相当复杂或需要很长时间才能访问,则可以在控制器测试中替换模

我已经编写了一个模型来添加用户。 然后我编写了一个控制器,在模型中调用该方法来添加用户

之后,我编写了phpunit测试来全面测试该控制器。因为我在控制器中调用模型来添加用户,用户也在测试模型


我的问题是,我是否也需要为模型创建一个单独的测试?即使是在控制器中调用,我也在完全测试控制器?

理想情况下,在编写单元测试时,每个代码单元(通常是一个类)都是单独测试的。这意味着有一个测试用例彻底测试您的模型类,另一个测试用例测试您的控制器。如果模型相当复杂或需要很长时间才能访问,则可以在控制器测试中替换模拟对象或存根

使用测试驱动的开发,只有在测试失败时才能编写代码。如果您从控制器的测试开始,我想您最终可能会测试模型。通过跟踪代码覆盖率,您可以确信您已经测试了所有模型代码

然而,如果不单独对模型进行测试,我会担心重构过程中可能出现控制器测试无法发现的问题。这也使得在控制器测试中诊断故障变得更加困难:控制器或模型是否出现故障