Php 测试动作Zend框架中的短截子方法

Php 测试动作Zend框架中的短截子方法,php,unit-testing,mocking,zend-framework2,Php,Unit Testing,Mocking,Zend Framework2,我正在使用Zend框架测试控制器类中的一个操作。不幸的是,此操作依赖于同一控制器类中的某些方法。我曾试图从控制器类中创建一个模拟对象,并存根这些方法,但测试的操作从未考虑到这一点。使用这些方法的最佳方式是什么 谢谢。如果操作在同一个类中,则不需要对它们进行模拟。只有类范围之外的依赖项才需要模拟。感谢您的回复。事实上,我不希望这些方法返回实际值。我只需要返回空值。就像在这个例子中一样:你不能同时混合一个真实的对象和一个模拟,这样做没有意义,或者如果你不得不这样做,你会有可测试性和隔离性问题。应该模

我正在使用Zend框架测试控制器类中的一个操作。不幸的是,此操作依赖于同一控制器类中的某些方法。我曾试图从控制器类中创建一个模拟对象,并存根这些方法,但测试的操作从未考虑到这一点。使用这些方法的最佳方式是什么


谢谢。

如果操作在同一个类中,则不需要对它们进行模拟。只有类范围之外的依赖项才需要模拟。感谢您的回复。事实上,我不希望这些方法返回实际值。我只需要返回空值。就像在这个例子中一样:你不能同时混合一个真实的对象和一个模拟,这样做没有意义,或者如果你不得不这样做,你会有可测试性和隔离性问题。应该模拟的方法必须与应该测试的方法隔离。唯一的方法是完全模拟你的控制器,这是完全无用的,因为你测试一个模拟…谢谢你的回答。我想进一步澄清我的问题。正如您可以在我共享的链接中看到的,有一个名为checkPassWord()的函数,被测试的函数(authorize())使用该函数。当给定的值错误时,checkPassWord()退出。这就是为什么编写了另一个名为CallExit()的助手方法来执行退出。然后,为了测试所需的函数(authorize()),我们模拟该类,并且只让CallExit()返回null,因为它是唯一的存根。而其他模拟函数中的所有代码仍在执行。然后,我们从模拟类调用测试函数。谢谢