<?php namespace AKlump\PHPUnit\Test\EasyMock; use AKlump\PHPUnit\EasyMock; use AKlump\PHPUnit\EasyMockTrait; use PHPUnit\Framework\TestCase;
In this implementation of getSchema
using mockObjectsMap
combined with EasyMock::PARTIAL
, $this->colorHandler
becomes a partial mock.
class MockObjectsMapPartialMockUnitTest extends TestCase { use EasyMockTrait; /** * {@inheritdoc} * * Demonstrate the use of mockObjectsMap, with a partial mock. */ protected function getSchema() { return [ 'classToBeTested' => "AKlump\PHPUnit\Test\EasyMock\Foxtrot", 'mockObjectsMap' => [ 'colorHandler' => [ '\AKlump\PHPUnit\Test\EasyMock\ColorHandler', EasyMock::PARTIAL, ], ], ]; } public function testCanSetColor() { $this->obj->setHandler($this->colorHandler); // As a partial mock, the default implementation is used... $this->assertSame('blue', $this->obj->getHandler()->getColor()); // ... unless we set up a mocked expectation... $this->colorHandler->allows('getColor')->andReturns('red'); // ... in which case our expectation is used instead. $this->assertSame('red', $this->obj->getHandler()->getColor()); } }
class ColorHandler { public function getColor() { return 'blue'; } }
final class Foxtrot { private $handler; public function setHandler(ColorHandler $handler) { $this->handler = $handler; return $this; } public function getHandler() { return $this->handler; } }