PHPUnit - 如何存根整个父 class?
PHPUnit - How do I stub the entire parent class?
我有一个糟糕的情况,我想测试的 class 正在扩展另一个 class,它有一个非常复杂的 public static
方法。如果父 class 没有扩展所需的其他 classes,这就不是问题。具体来说,我需要 \Illuminate\Database\Eloquent\Model
仍然被扩展。对于可能的重构以使其更易于测试,我束手无策。
有没有什么方法可以存根或更改有问题的 class 的父级,同时仍然允许模型 class 执行?
您应该使用模拟对象。
看这里:https://phpunit.de/manual/current/en/test-doubles.html#test-doubles.mock-objects
也许您可以创建一个 YourClassTestCase
来扩展您正在测试的 class。然后,在 YourClassTestCase
中使用简化的 return 覆盖静态方法并在 YourClassTestCase
上启动测试。
所以你将有 YourTest
-> yourClassTestCase
-> YourClass
-> ParentWithStaticMethod
.
我有一个糟糕的情况,我想测试的 class 正在扩展另一个 class,它有一个非常复杂的 public static
方法。如果父 class 没有扩展所需的其他 classes,这就不是问题。具体来说,我需要 \Illuminate\Database\Eloquent\Model
仍然被扩展。对于可能的重构以使其更易于测试,我束手无策。
有没有什么方法可以存根或更改有问题的 class 的父级,同时仍然允许模型 class 执行?
您应该使用模拟对象。 看这里:https://phpunit.de/manual/current/en/test-doubles.html#test-doubles.mock-objects
也许您可以创建一个 YourClassTestCase
来扩展您正在测试的 class。然后,在 YourClassTestCase
中使用简化的 return 覆盖静态方法并在 YourClassTestCase
上启动测试。
所以你将有 YourTest
-> yourClassTestCase
-> YourClass
-> ParentWithStaticMethod
.