getMockBuilder(ProductRepository::class) ->disableOriginalConstructor() ->getMock(); $translatorMock = $this->getMockBuilder(TranslatorInterface::class) ->disableOriginalConstructor() ->getMock(); $fileUploaderMock = $this->getMockBuilder(FileUploader::class) ->disableOriginalConstructor() ->getMock(); $loggerMock = $this->getMockBuilder(LoggerInterface::class) ->disableOriginalConstructor() ->getMock(); // test that the logger was called buut no error 500 should be raised $loggerMock->expects(self::once()) ->method('warning'); $productStorageMock = $this->getMockBuilder(FilesystemOperator::class) ->disableOriginalConstructor() ->getMock(); $exception = new UnableToDeleteFile('foo'); $productStorageMock->method('delete')->willThrowException($exception); $productManager = new ProductManager( $productRepositoryMock, $translatorMock, $fileUploaderMock, $productStorageMock, $loggerMock ); $product = (new Product()) ->setId(Uuid::v6()); $productManager->deleteImage($product, 'foobar.png'); } }