createMock(ClassNameNormalizer::class); $classNameNormalizer->expects($this->any())->method('execute')->willReturnArgument(0); $this->objectManagerMock = $this->getMockForAbstractClass(ObjectManagerInterface::class); $this->saveHandler = $objectManager->getObject( SaveHandlerProvider::class, [ 'classNameNormalizer' => $classNameNormalizer, 'objectManager' => $this->objectManagerMock ] ); $this->initEntityTypesProp(); } /** * @covers \Amasty\AdminActionsLog\Logging\Entity\SaveHandlerProvider::get * @dataProvider getDataProvider */ public function testGet($className, $createObjectCalls, $expectedClassName) { $this->objectManagerMock->expects($this->exactly($createObjectCalls))->method('get')->willReturn( $this->getMockForAbstractClass(EntitySaveHandlerInterface::class) ); $result = $this->saveHandler->get($className); $this->assertInstanceOf($expectedClassName, $result); } public function getDataProvider(): array { return [ 'no configured handler' => [ self::TEST_CLASS_NAME . '2', 0, Common::class ], 'has configure handler' => [ self::TEST_CLASS_NAME, 1, EntitySaveHandlerInterface::class ] ]; } private function initEntityTypesProp() { $providerReflection = new \ReflectionClass(SaveHandlerProvider::class); $entityTypesProp = $providerReflection->getProperty('entityTypes'); $entityTypesProp->setAccessible(true); $entityTypesProp->setValue($this->saveHandler, [ EntitySaveHandlerInterface::class => [ 'test' => self::TEST_CLASS_NAME ] ]); } }