Viewing file: MockingProtectedMethodsTest.php (3.51 KB) -rw-r--r-- Select action/file-type: (+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
<?php /** * Mockery * * LICENSE * * This source file is subject to the new BSD license that is bundled * with this package in the file LICENSE.txt. * It is also available through the world-wide-web at this URL: * http://github.com/padraic/mockery/master/LICENSE * If you did not receive a copy of the license and are unable to * obtain it through the world-wide-web, please send an email * to padraic@php.net so we can send you a copy immediately. * * @category Mockery * @package Mockery * @subpackage UnitTests * @copyright Copyright (c) 2010-2014 Pádraic Brady (http://blog.astrumfutura.com) * @license http://github.com/padraic/mockery/blob/master/LICENSE New BSD License */
namespace test\Mockery;
use Mockery\Adapter\Phpunit\MockeryTestCase;
class MockingProtectedMethodsTest extends MockeryTestCase {
public function setup() { $this->container = new \Mockery\Container; }
public function teardown() { $this->container->mockery_close(); }
/** * @test * * This is a regression test, basically we don't want the mock handling * interfering with calling protected methods partials */ public function shouldAutomaticallyDeferCallsToProtectedMethodsForPartials() { $mock = $this->container->mock("test\Mockery\TestWithProtectedMethods[foo]"); $this->assertEquals("bar", $mock->bar()); }
/** * @test * * This is a regression test, basically we don't want the mock handling * interfering with calling protected methods partials */ public function shouldAutomaticallyDeferCallsToProtectedMethodsForRuntimePartials() { $mock = $this->container->mock("test\Mockery\TestWithProtectedMethods")->shouldDeferMissing(); $this->assertEquals("bar", $mock->bar()); }
/** @test */ public function shouldAutomaticallyIgnoreAbstractProtectedMethods() { $mock = $this->container->mock("test\Mockery\TestWithProtectedMethods")->shouldDeferMissing(); $this->assertEquals(null, $mock->foo()); }
/** @test */ public function shouldAllowMockingProtectedMethods() { $mock = $this->container->mock("test\Mockery\TestWithProtectedMethods") ->shouldDeferMissing() ->shouldAllowMockingProtectedMethods();
$mock->shouldReceive("protectedBar")->andReturn("notbar"); $this->assertEquals("notbar", $mock->bar()); }
/** @test */ public function shouldAllowMockingProtectedMethodOnDefinitionTimePartial() { $mock = $this->container->mock("test\Mockery\TestWithProtectedMethods[protectedBar]") ->shouldAllowMockingProtectedMethods();
$mock->shouldReceive("protectedBar")->andReturn("notbar"); $this->assertEquals("notbar", $mock->bar()); }
/** @test */ public function shouldAllowMockingAbstractProtectedMethods() { $mock = $this->container->mock("test\Mockery\TestWithProtectedMethods") ->shouldDeferMissing() ->shouldAllowMockingProtectedMethods();
$mock->shouldReceive("abstractProtected")->andReturn("abstractProtected"); $this->assertEquals("abstractProtected", $mock->foo()); } }
abstract class TestWithProtectedMethods { public function foo() { return $this->abstractProtected(); }
abstract protected function abstractProtected();
public function bar() { return $this->protectedBar(); }
protected function protectedBar() { return 'bar'; } }
|