1. Go to this page and download the library: Download sytzez/data-object-tester library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
sytzez / data-object-tester example snippets
final class DataClass
{
public function __construct(
private string $string,
private int $int,
private array $array,
) {
}
public function getString(): string
{
return $this->string;
}
public function getInt(): int
{
return $this->int;
}
public function getArray(): array
{
return $this->array;
}
}
use Sytzez\DataObjectTester\DataObjects\ClassExpectation
use Sytzez\DataObjectTester\DataObjectTestCase
class DataClassTest extends DataObjectTestCase
{
/**
* @test
*/
public function it_returns_the_right_values(): void
{
$this->testDataObjects(
ClassExpectation::create(DataClass::class, [
'getString' => ['hello', 'world'],
'getInt' => [0, -1, PHP_INT_MAX],
'getArray' => [['a', 'b', 'c'], [1, 2, 3]],
])
);
}
}
use Sytzez\DataObjectTester\DataObjects\ClassExpectation
use Sytzez\DataObjectTester\PropertyCases\DefaultPropertyCase;
ClassExpectation::create(ValidatedDataClass::class, [
'getNumber' => [
1,
10,
new DefaultPropertyCase(0),
],
]),
public function __construct(
private int $number,
) {
if ($this->number < 0) {
throw new \InvalidArgumentException('Number cannot be negative');
}
}
use Sytzez\DataObjectTester\DataObjects\ClassExpectation
use Sytzez\DataObjectTester\PropertyCases\ConstructorExceptionPropertyCase;
ClassExpectation::create(ValidatedDataClass::class, [
'getNumber' => [
1,
10,
new ConstructorExceptionPropertyCase(-1, 'Number cannot be negative'),
],
]),
public function getString(): string
{
return ucfirst($this->string);
}
use Sytzez\DataObjectTester\DataObjects\ClassExpectation
use Sytzez\DataObjectTester\PropertyCases\TransformativePropertyCase;
ClassExpectation::create(TransformativeDataClass::class, [
'getString' => [
new TransformativePropertyCase('hello', 'Hello'),
new TransformativePropertyCase('world', 'World'),
],
]),
use Sytzez\DataObjectTester\PropertyCases\ClosurePropertyCase;
ClassExpectation::create(AcmeClass::class, [
'getCollection' => new ClosurePropertyCase(
new ArrayCollection([1, 2, 3]),
static fn (Collection $output): bool =>
$output->contains(1)
&& $output->contains(2)
&& $output->contains(3)
),
])