我想你想打电话给
$this->identicalTo
功能在
with
功能。这将验证是否传递了正确的对象。如果更新代码以传入
$mock1
它应该失败,因为对象不同
use PHPUnit\Framework\MockObject\MockObject;
use PHPUnit\Framework\TestCase;
class ExampleTest extends TestCase
{
public function testExample()
{
$mock1 = $this->getMockBuilder(stdClass::class)->getMock();
$mock2 = $this->getMockBuilder(stdClass::class)->getMock();
/** @var MockObject|ArrayObject $mock3 */
$mock3 = $this->getMockBuilder(ArrayObject::class)
->setMethods(['append'])->getMock();
$mock3->expects($this->once())->method('append')->with($this->identicalTo($mock2)); // OK
$mock3->append($mock2);
}
}
其他例子:
use PHPUnit\Framework\MockObject\MockObject;
use PHPUnit\Framework\TestCase;
class ExampleTest extends TestCase
{
public function testExample()
{
$mock1 = $this->getMockBuilder(stdClass::class)->getMock();
$mock2 = $this->getMockBuilder(stdClass::class)->getMock();
/** @var MockObject|ArrayObject $mock3 */
$mock3 = $this->getMockBuilder(ArrayObject::class)
->setMethods(['append'])->getMock();
$class = new ExampleClass($mock3);
$mock3->expects($this->once())->method('append')->with($this->identicalTo($mock2)); // OK
$class->appendObject($mock2);
}
}
class ExampleClass
{
private $array;
public function __construct(ArrayObject $array)
{
$this->array = $array;
}
public function appendObject($stdClass)
{
$this->array->append($stdClass);
}
}