Level 102
Try setting it up as this example https://docs.mockery.io/en/latest/cookbook/big_parent_class.html
I have class that extend Memcached:
<?php
namespace Src\Databases;
class Memcached extends \Memcached
{
private string $prefix = 'prefix';
public function __construct(array $services = ['127.0.0.1'])
{
parent::__construct();
foreach ($services as $service)
$this->addServer($service, 11211);
}
public function setData(string $key, mixed $data): void
{
$this->set($this->prefix . $key, [
'data' => $data,
'timestamp' => microtime(true)
]);
}
}
My Unit Test:
<?php
namespace Tests\Databases;
use PHPUnit\Framework\TestCase;
class Memcached extends TestCase
{
/** @test */
public function test()
{
$data = ['one', 'two', 'three'];
$now = microtime(true);
$memcached = $this->createMock(\Src\Databases\Memcached::class);
$memcached->expects($this->once())
->method('set')
->with('test', ['data' => $data, 'timestamp' => $now]);
$memcached->setData('test', $data);
}
}
But it fails:
Expectation failed for method name is "set" when invoked 1 time(s).
Method was expected to be called 1 times, actually called 0 times.
How can I write test for proof such block?
Please or to participate in this conversation.