/** @return MockObject */ private function buildMock(array $args) { $mockBuilder = $this->testCase->getMockBuilder($this->className); $mockBuilder->setMethods(array_merge($this->extractMethods(), array('this', 'mock'))); if ($args) { $mockBuilder->setConstructorArgs($args); } else { $mockBuilder->disableOriginalConstructor(); } $mock = $mockBuilder->getMock(); $reflection = new \ReflectionClass($this->className); foreach ($this->items as $item) { $this->addMethodExpectation($reflection, $mock, $item); } $mock->expects(TestCase::any())->method('this')->will(TestCase::returnValue(new Reflection($mock))); $mock->expects(TestCase::any())->method('mock')->will(TestCase::returnValue(new MockAdjuster($mock, $reflection))); foreach ($this->properties as $key => $value) { $mock->this()->{$key} = $value; } return $mock; }