14/03/2018 - PHPUNIT
Bu örneğimizde aşağıdaki hata mesajlarını veren ve mevcut olmayan metodları taklit edip test edeceğiz. Testimiz Predis\ClientInterface
ile ilişkili olan setex
ve exists
metodlarını kapsıyor. Bu methodlar aslında mevcut ama geleneksel yapıda değil.
Expectation failed for method name is equal to <string:setex> when invoked 1 time(s)
Trying to configure method "setex" which cannot be configured because it does not exist, has not been specified, is final, or is static.
Expectation failed for method name is equal to <string:exists> when invoked 1 time(s)
Trying to configure method "exists" which cannot be configured because it does not exist, has not been specified, is final, or is static.
declare(strict_types=1);
namespace AppBundle\Util;
use Predis\ClientInterface;
class CacheUtil
{
private $cache;
public function __construct(ClientInterface $cache)
{
$this->cache = $cache;
}
public function cache(string $id, string $value): void
{
$this->cache->setex($id, 3600, $value);
}
public function exists(string $id): int
{
return $this->cache->exists($id);
}
}
declare(strict_types=1);
namespace Tests\AppBundle\Util;
use AppBundle\Util\CacheUtil;
use PHPUnit\Framework\TestCase;
use PHPUnit_Framework_MockObject_MockObject;
use Predis\ClientInterface;
class CacheUtilTest extends TestCase
{
/** @var ClientInterface|PHPUnit_Framework_MockObject_MockObject */
private $cacheMock;
/** @var CacheUtil */
private $cacheUtil;
protected function setUp()
{
$this->cacheMock = $this
->getMockBuilder(ClientInterface::class)
->setMethods(['setex', 'exists'])
->disableOriginalConstructor()
->getMockForAbstractClass();
$this->cacheUtil = new CacheUtil($this->cacheMock);
}
/**
* @test
*/
public function it_caches()
{
$id = 'ID';
$value = 'VALUE';
$this->cacheMock
->expects($this->once())
->method('setex')
->with($id, 3600, $value)
->willReturn(true);
$this->assertNull($this->cacheUtil->cache($id, $value));
}
/**
* @test
*
* @dataProvider getCacheExistenceProvider
*/
public function it_checks_cache_existence($existence)
{
$id = 'ID';
$this->cacheMock
->expects($this->once())
->method('exists')
->with($id)
->willReturn($existence);
$this->assertSame($existence, $this->cacheUtil->exists($id));
}
public function getCacheExistenceProvider()
{
return [[0], [1]];
}
}
$ vendor/bin/phpunit --filter CacheUtilTest tests/AppBundle/Util/CacheUtilTest.php
PHPUnit 6.3.1 by Sebastian Bergmann and contributors.
... 3 / 3 (100%)
Time: 61 ms, Memory: 4.00MB
OK (3 tests, 6 assertions)