/**
  * @param $class
  * @param $proxyFactory
  * @param $testRunner
  * @param $mutator
  * @throws \Exception
  */
 private function calculateRealCoverage($class, ProxyFactory $proxyFactory, PHPUnitRunner $testRunner, Mutator $mutator)
 {
     $proxy = $proxyFactory->getProxy($class);
     $tester = new ProxiedMutationTester($proxy, $class, $testRunner);
     $this->testPrecondition($tester);
     $mutator->testMutations($tester, new MutationGenerator($class));
     $proxy->loadClass($class);
     $this->testPostcondition($tester);
 }
 public function testFactoryCachesProxiesAndReturnsAlwaysTheSameInstance()
 {
     // arrange
     $class = $this->createFakeClass("ImaginaryNamespace", "ClassA");
     $factory = new ProxyFactory(array($class));
     // act
     $proxy1 = $factory->getProxyForName('\\ImaginaryNamespace\\ClassA');
     $proxy2 = $factory->getProxyForName('\\ImaginaryNamespace\\ClassA');
     // assert
     $this->assertSame($proxy1, $proxy2);
 }