- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在 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/
在 phpunit 文档中是示例: $stub = $this->getMockBuilder($originalClassName) ->disableOr
我有一个使用数据库适配器的模型,我想对其进行测试。数据库适配器的构造函数处理所有数据库连接,因此我想在测试期间避免它,否则它会返回有关未设置数据库密码/数据库用户名等的错误。 我当前正在运行的代码如下
我有一个使用数据库适配器的模型,我想对其进行测试。数据库适配器的构造函数处理所有数据库连接,因此我想在测试期间避免它,否则它会返回有关未设置数据库密码/数据库用户名等的错误。 我当前正在运行的代码如下
我是一名优秀的程序员,十分优秀!