addressMock = $this->createPartialMock( \Magento\Quote\Model\Quote\Address::class, ['__wakeup', 'getOrderId', 'hasDataChanges', 'beforeSave', 'afterSave', 'validateBeforeSave', 'getOrder'] ); $this->quoteMock = $this->createPartialMock(\Magento\Quote\Model\Quote::class, ['__wakeup', 'getId']); $this->appResourceMock = $this->createMock(\Magento\Framework\App\ResourceConnection::class); $this->connectionMock = $this->createMock(\Magento\Framework\DB\Adapter\Pdo\Mysql::class); $this->entitySnapshotMock = $this->createMock( \Magento\Framework\Model\ResourceModel\Db\VersionControl\Snapshot::class ); $this->relationCompositeMock = $this->createMock( \Magento\Framework\Model\ResourceModel\Db\VersionControl\RelationComposite::class ); $this->appResourceMock->expects($this->any()) ->method('getConnection') ->will($this->returnValue($this->connectionMock)); $objectManager = new \Magento\Framework\TestFramework\Unit\Helper\ObjectManager($this); $this->connectionMock->expects($this->any()) ->method('describeTable') ->will($this->returnValue([])); $this->connectionMock->expects($this->any()) ->method('insert'); $this->connectionMock->expects($this->any()) ->method('lastInsertId'); $this->addressResource = $objectManager->getObject( \Magento\Quote\Model\ResourceModel\Quote\Address::class, [ 'resource' => $this->appResourceMock, 'entitySnapshot' => $this->entitySnapshotMock, 'entityRelationComposite' => $this->relationCompositeMock ] ); } public function testSave() { $this->entitySnapshotMock->expects($this->once()) ->method('isModified') ->with($this->addressMock) ->willReturn(true); $this->entitySnapshotMock->expects($this->once()) ->method('registerSnapshot') ->with($this->addressMock); $this->relationCompositeMock->expects($this->once()) ->method('processRelations') ->with($this->addressMock); $this->addressResource->save($this->addressMock); } }