Skip to content

Commit 8d369e1

Browse files
Merge branch '2.0'
2 parents 26ad268 + 5888b25 commit 8d369e1

File tree

3 files changed

+40
-2
lines changed

3 files changed

+40
-2
lines changed

src/Framework/MockObject/Generator.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -335,7 +335,7 @@ interface_exists($originalClassName, $callAutoload)) {
335335
$methods = $mockedMethods;
336336

337337
foreach ($reflector->getMethods() as $method) {
338-
if ($method->isAbstract() || !in_array($method->getName(), $methods)) {
338+
if ($method->isAbstract() && !in_array($method->getName(), $methods)) {
339339
$methods[] = $method->getName();
340340
}
341341
}

tests/GeneratorTest.php

Lines changed: 34 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ public function testGetMockForAbstractClassStubbingAbstractClass()
5757
/**
5858
* @covers PHPUnit_Framework_MockObject_Generator::getMockForAbstractClass
5959
*/
60-
public function testGetMockForAbstractClassWithNonexistentMethods()
60+
public function testGetMockForAbstractClassWithNonExistentMethods()
6161
{
6262
$mock = $this->generator->getMockForAbstractClass(
6363
'AbstractMockTestClass', array(), '', true,
@@ -68,6 +68,21 @@ public function testGetMockForAbstractClassWithNonexistentMethods()
6868
$this->assertTrue(method_exists($mock, 'doSomething'));
6969
}
7070

71+
/**
72+
* @covers PHPUnit_Framework_MockObject_Generator::getMockForAbstractClass
73+
*/
74+
public function testGetMockForAbstractClassShouldCreateStubsOnlyForAbstractMethodWhenNoMethodsWereInformed()
75+
{
76+
$mock = $this->generator->getMockForAbstractClass('AbstractMockTestClass');
77+
78+
$mock->expects($this->any())
79+
->method('doSomething')
80+
->willReturn('testing');
81+
82+
$this->assertEquals('testing', $mock->doSomething());
83+
$this->assertEquals(1, $mock->returnAnything());
84+
}
85+
7186
/**
7287
* @dataProvider getMockForAbstractClassExpectsInvalidArgumentExceptionDataprovider
7388
* @covers PHPUnit_Framework_MockObject_Generator::getMockForAbstractClass
@@ -98,9 +113,27 @@ public static function getMockForAbstractClassExpectsInvalidArgumentExceptionDat
98113
);
99114
}
100115

116+
/**
117+
* @covers PHPUnit_Framework_MockObject_Generator::getMockForTrait
118+
* @requires PHP 5.4.0
119+
*/
120+
public function testGetMockForTraitWithNonExistentMethodsAndNonAbstractMethods()
121+
{
122+
$mock = $this->generator->getMockForTrait(
123+
'AbstractTrait', array(), '', true,
124+
true, true, array('nonexistentMethod')
125+
);
126+
127+
$this->assertTrue(method_exists($mock, 'nonexistentMethod'));
128+
$this->assertTrue(method_exists($mock, 'doSomething'));
129+
$this->assertTrue($mock->mockableMethod());
130+
$this->assertTrue($mock->anotherMockableMethod());
131+
}
132+
101133
/**
102134
* @dataProvider getMockForTraitExpectsInvalidArgumentExceptionDataprovider
103135
* @covers PHPUnit_Framework_MockObject_Generator::getMockForTrait
136+
* @requires PHP 5.4.0
104137
* @expectedException PHPUnit_Framework_Exception
105138
*/
106139
public function testGetMockForTraitExpectingInvalidArgumentException($traitName, $mockClassName)

tests/_files/AbstractMockTestClass.php

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,4 +2,9 @@
22
abstract class AbstractMockTestClass
33
{
44
abstract public function doSomething();
5+
6+
public function returnAnything()
7+
{
8+
return 1;
9+
}
510
}

0 commit comments

Comments
 (0)