public function renderWorksAsExpected($originalClassName, $originalClassAnnotations, $originalClassDocumentation, $originalClassConstants, $expectedProxyCode)
{
$mockReflectionService = $this->getMockBuilder(ReflectionService::class)->disableOriginalConstructor()->getMock();
$mockReflectionService->expects($this->any())->method('isClassAbstract')->will($this->returnValue(strpos($expectedProxyCode, 'abstract ') !== false));
$mockReflectionService->expects($this->any())->method('getClassAnnotations')->will($this->returnValue($originalClassAnnotations));
$mockProxyClass = $this->getAccessibleMock(ProxyClass::class, ['buildClassDocumentation'], [$originalClassName], '', true);
$mockProxyClass->expects($this->any())->method('buildClassDocumentation')->will($this->returnValue($originalClassDocumentation));
$mockProxyClass->injectReflectionService($mockReflectionService);
foreach ($originalClassConstants as $originalClassConstant) {
$mockProxyClass->addConstant($originalClassConstant['name'], $originalClassConstant['value']);
}
$proxyCode = $mockProxyClass->render();
$this->assertEquals($expectedProxyCode, $proxyCode);
}