Files
DesignPatternsPHP/Structural/Facade/Tests/FacadeTest.php
2019-08-19 18:11:49 +02:00

37 lines
1.0 KiB
PHP

<?php declare(strict_types=1);
namespace DesignPatterns\Structural\Facade\Tests;
use DesignPatterns\Structural\Facade\Facade;
use DesignPatterns\Structural\Facade\OperatingSystem;
use PHPUnit\Framework\TestCase;
class FacadeTest extends TestCase
{
public function testComputerOn()
{
/** @var OperatingSystem|\PHPUnit_Framework_MockObject_MockObject $os */
$os = $this->createMock('DesignPatterns\Structural\Facade\OperatingSystem');
$os->method('getName')
->will($this->returnValue('Linux'));
$bios = $this->getMockBuilder('DesignPatterns\Structural\Facade\Bios')
->setMethods(['launch', 'execute', 'waitForKeyPress'])
->disableAutoload()
->getMock();
$bios->expects($this->once())
->method('launch')
->with($os);
$facade = new Facade($bios, $os);
// the facade interface is simple
$facade->turnOn();
// but you can also access the underlying components
$this->assertSame('Linux', $os->getName());
}
}