PHPUnit-如何存根整个父类?

PHPUnit-如何存根整个父类?,phpunit,laravel-5.5,Phpunit,Laravel 5.5,我遇到了一个糟糕的情况,我想测试的一个类正在扩展另一个具有相当复杂的公共静态方法的类。如果父类没有扩展所需的其他类,那么这就不会是一个问题。具体来说,我需要继续扩展\illumb\Database\elount\Model。我对可能的重构束手无策,以使其更易于测试 在仍然允许模型类执行的情况下,是否有任何方法可以存根或更改相关类的父类?您应该使用模拟对象。 请参见此处:您应该使用模拟对象。 请参见此处:也许您可以创建一个扩展您正在测试的类的YourClassTestCase。然后,在YourCl

我遇到了一个糟糕的情况,我想测试的一个类正在扩展另一个具有相当复杂的
公共静态
方法的类。如果父类没有扩展所需的其他类,那么这就不会是一个问题。具体来说,我需要继续扩展
\illumb\Database\elount\Model
。我对可能的重构束手无策,以使其更易于测试


在仍然允许模型类执行的情况下,是否有任何方法可以存根或更改相关类的父类?

您应该使用模拟对象。
请参见此处:

您应该使用模拟对象。
请参见此处:

也许您可以创建一个扩展您正在测试的类的
YourClassTestCase
。然后,在
YourClassTestCase
中,使用简化的返回覆盖静态方法,并在
YourClassTestCase
上启动测试


因此,您将有
您的测试
->
您的ClassTestCase
->
您的类
->
家长使用staticMethod
也许您可以创建一个扩展您正在测试的类的
您的ClassTestCase
。然后,在
YourClassTestCase
中,使用简化的返回覆盖静态方法,并在
YourClassTestCase
上启动测试


因此,您将有
YourTest
->
yourClassTestCase
->
YourClass
->
ParentWithStaticMethod

标准模拟在这里不起作用。我必须找到一种方法来完全存根父类,同时保留祖父母,或者找到一种方法用不同的父类替换父类。如果我可以将
alias
的作用域仅隔离到父对象中,那么尝试在父对象中存根单个静态方法是可行的。我必须找到一种方法来完全存根父类,同时保留祖父母,或者找到一种方法用不同的父类替换父类。如果我可以将
alias
的作用域仅隔离到父级,那么尝试在父级中存根单个静态方法将是可行的。