对于我生命中的爱,我无法弄清楚createMock($type)
和getMockBuilder($type)
我正在查看原始文档,而且只有一个我不理解的内容。
...您可以使用getMockBuilder($ type)方法来自定义测试双生成 流畅的界面。
如果你能给我一个例子,我将不胜感激。谢谢。
答案 0 :(得分:36)
createMock($ type)在内部使用getMockBuilder()
:
protected function createMock($originalClassName)
{
return $this->getMockBuilder($originalClassName)
->disableOriginalConstructor()
->disableOriginalClone()
->disableArgumentCloning()
->disallowMockingUnknownTypes()
->getMock();
}
因此,createMock()
方法将返回一个使用一般最佳实践默认值构建的模拟。
但是使用 getMockBuilder($ type),您可以根据自己的要求创建模拟。
答案 1 :(得分:9)
从手册中 https://phpunit.de/manual/current/en/test-doubles.html
提供的createMock($ type)和getMockBuilder($ type)方法 PHPUnit可以在测试中用于自动生成一个对象 可以作为指定原始类型(界面或 班级名称)。此测试双重对象可用于每个上下文 预期或需要原始类型的对象。
createMock($ type)方法立即返回测试双精度对象 对于指定的类型(接口或类)。创建此测试 使用最佳实践默认值执行double(__construct() 并且原始类的__clone()方法没有被执行 传递给测试double的方法的参数不会被克隆。
如果这些默认值不是您所需要的,那么您可以使用 getMockBuilder($ type)方法来自定义测试双代 使用流畅的界面。
他们已经有很多关于堆栈溢出的答案,哪些是流畅的接口。