gpt4 book ai didi

php - disableOriginalConstructor 有什么作用?

转载 作者:行者123 更新时间:2023-12-05 04:06:18 24 4
gpt4 key购买 nike

在 phpunit 文档中是示例:

$stub = $this->getMockBuilder($originalClassName)
->disableOriginalConstructor()
->disableOriginalClone()
->disableArgumentCloning()
->disallowMockingUnknownTypes()
->getMock();

disableOriginalConstructor()disableOriginalClone() 做了什么,因为 mocks 中的构造函数和克隆在默认情况下是禁用的?

最佳答案

他们言出必行。再看看你举的例子。您首先创建一个模拟生成器,然后对其进行自定义以生成您想要的内容。如果您刚刚调用了 $this->getMockBuilder()->getMock();,您将收到一个不同的测试替身。您会收到一个会调用原始构造函数的 double,因此您还必须像这样提供构造函数的参数:

$this->getMockBuilder()
->setConstructorArgs()
->getMock();

现在看一下 PHPUnit\Framework\TestCase 中的 createMock() 方法。此方法明确提供了您提到的一些默认值。这就是 createMock() 以其工作方式工作的原因。

总结一下:$this->createMock()$this->getMockBuilder()->getMock() 做的不是同一件事。它们的不同之处在于 createMock() 生成带有一些默认值的测试替身,而构建器没有这样做。

关于php - disableOriginalConstructor 有什么作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49964521/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com