From 4186e249486aa08fa2a58ce5d8045ec0ae05406f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20H=C3=A1jek?= Date: Tue, 11 Aug 2015 19:51:18 +0200 Subject: [PATCH] presunuti vyjimek --- src/Mocker/Builder.php | 27 +++++--- src/Mocker/Exception.php | 6 ++ src/Mocker/Exception/FinalMethodException.php | 8 +++ .../NonExistentInvocationException.php | 8 +++ .../Exception/NonExistentMethodException.php | 8 +++ .../Exception/PrivateMethodException.php | 8 +++ .../Exception/ProtectedMethodException.php | 8 +++ .../Exception/StaticMethodException.php | 8 +++ .../UndeclaredMethodInvocationException.php | 2 +- .../UnknownVerifyMethodException.php | 8 +++ src/Mocker/NonExistentInvocationException.php | 6 -- src/Mocker/NonExistentMethodCallException.php | 6 -- src/Mocker/PrivateMethodException.php | 6 -- src/Mocker/ProtectedMethodException.php | 7 --- src/Mocker/StaticMethodException.php | 6 -- src/Mocker/UnknownVerifyMethodException.php | 6 -- src/Mocker/VerifyMethod.php | 2 + tests/src/mocker/MockBuilderTestClass.php | 6 ++ tests/src/mocker/MockerTest.php | 62 ++++++++++++------- 19 files changed, 132 insertions(+), 66 deletions(-) create mode 100755 src/Mocker/Exception.php create mode 100755 src/Mocker/Exception/FinalMethodException.php create mode 100755 src/Mocker/Exception/NonExistentInvocationException.php create mode 100755 src/Mocker/Exception/NonExistentMethodException.php create mode 100755 src/Mocker/Exception/PrivateMethodException.php create mode 100755 src/Mocker/Exception/ProtectedMethodException.php create mode 100755 src/Mocker/Exception/StaticMethodException.php rename src/Mocker/{ => Exception}/UndeclaredMethodInvocationException.php (62%) create mode 100755 src/Mocker/Exception/UnknownVerifyMethodException.php delete mode 100755 src/Mocker/NonExistentInvocationException.php delete mode 100755 src/Mocker/NonExistentMethodCallException.php delete mode 100755 src/Mocker/PrivateMethodException.php delete mode 100755 src/Mocker/ProtectedMethodException.php delete mode 100755 src/Mocker/StaticMethodException.php delete mode 100755 src/Mocker/UnknownVerifyMethodException.php diff --git a/src/Mocker/Builder.php b/src/Mocker/Builder.php index eef3d9a..5570c20 100755 --- a/src/Mocker/Builder.php +++ b/src/Mocker/Builder.php @@ -1,5 +1,13 @@ originClassMethods; if (!array_key_exists($name, $originMethods)) { - throw new NonExistentMethodCallException($this->className . "::" . $name . ' does not exists.'); + throw new NonExistentMethodException($this->className . "::" . $name . ' does not exists.'); } $method = $originMethods[$name]; if ($method->isStatic()) { @@ -115,6 +124,9 @@ private function checkOriginClassMethod($name) if ($method->isProtected()) { throw new ProtectedMethodException($this->className . "::" . $name . ' is protected, MockBuilder is useless. :('); } + if ($method->isFinal()) { + throw new FinalMethodException($this->className . "::" . $name . ' is final, MockBuilder is useless. :('); + } } /** @@ -128,8 +140,7 @@ public function createMock() $this->mock = $this->testCase->getMock($this->className, $allMethodsNames, array(), '', false, false, false); foreach ($methods as $methodName => $method) { - $returnParam = isset($this->returns[$methodName]) ? $this->returns[$methodName] : null; - $this->buildMethod($methodName, $returnParam); + $this->buildMethod($methodName); } $this->createUndeclaredMethods(); return $this->mock; @@ -137,9 +148,8 @@ public function createMock() /** * @param string $methodName - * @param mixed $returnParam */ - private function buildMethod($methodName, $returnParam) + private function buildMethod($methodName) { $self = $this; @@ -169,6 +179,9 @@ private function buildMethod($methodName, $returnParam) $inputParams[] = count($self->getInvocations($methodName)); return call_user_func_array($returnValue, $inputParams); break; + default: + throw new Exception("unknown method return type {$returnType}"); + break; } }; diff --git a/src/Mocker/Exception.php b/src/Mocker/Exception.php new file mode 100755 index 0000000..4c9fb5b --- /dev/null +++ b/src/Mocker/Exception.php @@ -0,0 +1,6 @@ +createMocker(); $mocker->mockMethod('sum')->willReturn(1); - $mock = $mocker->createMock(); + $mock = $this->createMock($mocker); $this->assertEquals(1, $mock->sum(1, 2)); } @@ -31,7 +31,7 @@ public function willThrowException() $expectedException = new Exception('test'); $mocker->mockMethod('sum')->willThrow($expectedException); - $mock = $mocker->createMock(); + $mock = $this->createMock($mocker); try { $mock->sum(1, 2); @@ -49,7 +49,7 @@ public function willReturnSelf() $mocker->mockMethod('sum')->willReturnSelf(); - $mock = $mocker->createMock(); + $mock = $this->createMock($mocker); $this->assertSame($mock, $mock->sum(1)); } @@ -63,7 +63,7 @@ public function willReturnArgument() $mocker->mockMethod('sum')->willReturnArgument(1); - $mock = $mocker->createMock(); + $mock = $this->createMock($mocker); $this->assertEquals(1, $mock->sum(1)); $this->assertEquals(2, $mock->sum(2)); @@ -77,11 +77,11 @@ public function willCallback() { $mocker = $this->createMocker(); - $mocker->mockMethod('sum')->willCallback(function ($a, $b, $invocationsCount) { + $mocker->mockMethod('sum')->willCallback(function ($a, $b) { return $a * $b; }); - $mock = $mocker->createMock(); + $mock = $this->createMock($mocker); $this->assertEquals(2, $mock->sum(1, 2)); $this->assertEquals(12, $mock->sum(3, 4)); @@ -90,14 +90,12 @@ public function willCallback() /** * @test - * @expectedException \Jelito\DevStack\Mocker\UnknownVerifyMethodException + * @expectedException \Jelito\DevStack\Mocker\Exception\UnknownVerifyMethodException */ public function unknownVerifyMethod() { $mocker = $this->createMocker(); - $mock = $mocker->createMock(); - $mocker->verifyMethod('sum'); } @@ -109,7 +107,7 @@ public function numberOfInvocations() $mocker = $this->createMocker(); $mocker->mockMethod('sum'); - $mock = $mocker->createMock(); + $mock = $this->createMock($mocker); $mocker->verifyMethod('sum')->calledNever(); @@ -128,7 +126,7 @@ public function invocationsExpectedParams() $mocker = $this->createMocker(); $mocker->mockMethod('sum'); - $mock = $mocker->createMock(); + $mock = $this->createMock($mocker); $mock->sum(1, 2); $mock->sum(3, 4); @@ -144,14 +142,14 @@ public function invocationsExpectedParams() /** * @test - * @expectedException \Jelito\DevStack\Mocker\NonExistentInvocationException + * @expectedException \Jelito\DevStack\Mocker\Exception\NonExistentInvocationException */ public function nonExistedInvocation() { $mocker = $this->createMocker(); $mocker->mockMethod('sum'); - $mock = $mocker->createMock(); + $mock = $this->createMock($mocker); $mock->sum(1, 2); @@ -165,7 +163,7 @@ public function exceptionLikeExpectedParam() { $mocker = $this->createMocker(); $mocker->mockMethod('sum')->willReturn(1); - $mock = $mocker->createMock(); + $mock = $this->createMock($mocker); $e = new \InvalidArgumentException("asd"); $mock->sum($e); @@ -175,7 +173,7 @@ public function exceptionLikeExpectedParam() /** * @test - * @expectedException \Jelito\DevStack\Mocker\StaticMethodException + * @expectedException \Jelito\DevStack\Mocker\Exception\StaticMethodException */ public function tryDeclareStaticFunction() { @@ -185,7 +183,7 @@ public function tryDeclareStaticFunction() /** * @test - * @expectedException \Jelito\DevStack\Mocker\PrivateMethodException + * @expectedException \Jelito\DevStack\Mocker\Exception\PrivateMethodException */ public function tryDeclarePrivateFunction() { @@ -195,7 +193,7 @@ public function tryDeclarePrivateFunction() /** * @test - * @expectedException \Jelito\DevStack\Mocker\ProtectedMethodException + * @expectedException \Jelito\DevStack\Mocker\Exception\ProtectedMethodException */ public function tryDeclareProtectedFunction() { @@ -205,7 +203,7 @@ public function tryDeclareProtectedFunction() /** * @test - * @expectedException \Jelito\DevStack\Mocker\NonExistentMethodCallException + * @expectedException \Jelito\DevStack\Mocker\Exception\NonExistentMethodException */ public function tryDeclareNonExistentMethod() { @@ -215,12 +213,22 @@ public function tryDeclareNonExistentMethod() /** * @test - * @expectedException \Jelito\DevStack\Mocker\UndeclaredMethodInvocationException + * @expectedException \Jelito\DevStack\Mocker\Exception\FinalMethodException + */ + public function tryDeclareFinalMethod() + { + $mocker = $this->createMocker(); + $mocker->mockMethod('finalMethod'); + } + + /** + * @test + * @expectedException \Jelito\DevStack\Mocker\Exception\UndeclaredMethodInvocationException */ public function callUndeclaredFunction() { $mocker = $this->createMocker(); - $mock = $mocker->createMock(); + $mock = $this->createMock($mocker); $mock->sum(5, 6); } @@ -230,14 +238,26 @@ public function callUndeclaredFunction() public function setPublicProperty() { $mocker = $this->createMocker(); - $mock = $mocker->createMock(); + $mock = $this->createMock($mocker); $mock->publicProperty = 10; $this->assertEquals(10, $mock->publicProperty); } + /** + * @return Mocker + */ private function createMocker() { return new Mocker('MockBuilderTestClass', $this); } + + /** + * @param Mocker $mocker + * @return \MockBuilderTestClass + */ + private function createMock(Mocker $mocker) + { + return $mocker->createMock(); + } }