我已经写了一个模型来添加用户。 然后我写了一个控制器,在模型中调用该方法来添加用户。
之后我写了phpunit测试来完全测试那个控制器。因为我在控制器中调用模型来添加也在测试模型的用户。
我的问题是,我是否还需要为模型创建单独的测试?即使是在控制器中调用,我也在完全测试控制器?
答案 0 :(得分:2)
理想情况下,在编写单元测试时,每个代码单元(通常是一个类)都是单独测试的。这意味着有一个测试用例可以彻底测试您的模型类,另一个测试用例可以测试您的控制器。如果模型相当复杂或需要很长时间才能访问,则可以在控制器测试中替换模拟对象或存根。
使用测试驱动开发,只有在测试失败后才能编写代码。如果您开始使用控制器测试,我想您最终可能会测试模型。通过跟踪代码覆盖率,您可以确信您已经测试了所有模型代码。
但是,如果不单独对模型进行测试,我会担心在重构期间可能会出现问题,而控制器测试无法捕获这些问题。它还会使控制器测试中的故障更难诊断:控制器或模型是否有故障?