1. Go to this page and download the library: Download draw/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/ */
draw / tester example snippets
namespace Your\Project\Name;
use PHPUnit\Framework\TestCase;
use Draw\Component\Tester\DataTester;
class SimpleTest extends TestCase
{
public function test()
{
$data = [
'key1' => 'value1',
'key2' => (object)['toto' => 'value']
];
$dateTester = new DataTester($data);
$dateTester
->assertIsArray('array')
->assertCount(2)
->path('[key1]')->assertSame('value1');
$dateTester->path('[key2].toto')->assertSame('value');
}
}
namespace App\Tests;
use Draw\Component\Tester\PHPUnit\Extension\SetUpAutowire\AutowiredInterface;use Symfony\Bundle\FrameworkBundle\Test\KernelTestCase;
class MyTest extends KernelTestCase implements AutowiredInterface
{
}
namespace App\Tests;
use App\MyInterface;
use App\MyObject;
use App\MySecondObject;
use Draw\Component\Tester\PHPUnit\Extension\SetUpAutowire\AutowiredInterface;
use Draw\Component\Tester\PHPUnit\Extension\SetUpAutowire\AutowireMock;
use PHPUnit\Framework\MockObject\MockObject;
use PHPUnit\Framework\TestCase;
class MyTest extends TestCase implements AutowiredInterface
{
// Will create a mock object of MyInterface and assigned it to property.
// This can be used in conjunction with the AutowireMockProperty (see below).
#[AutowireMock]
private MyInterface&MockObject $aService
// The AutowireMockProperty will replace the aService property of $myObject.
#[AutowireMockProperty('aService')]
private MyObject $myObject;
// By defaults, it will use the same property name in the current test case, but you can specify a different one using the second parameter.
#[AutowireMockProperty('aService', 'anotherProperty')]
private MySecondObject $mySecondObject;
public function setUp(): void
{
$this->myObject = new MyObject();
$this->mySecondObject = new MySecondObject();
}
}
namespace App\Tests;
use App\MyService;use Draw\Bundle\TesterBundle\PHPUnit\Extension\SetUpAutowire\AutowireService;use Draw\Component\Tester\PHPUnit\Extension\SetUpAutowire\AutowiredCompletionAwareInterface;use Symfony\Bundle\FrameworkBundle\Test\KernelTestCase;
class MyTest extends KernelTestCase implements AutowiredCompletionAwareInterface
{
#[AutowireMock]
private MyInterface&MockObject $aService
public function postAutowire(): void
{
$this->aService
->expects(static::any())
->method('someMethod')
->willReturn('someValue');
}
}
namespace App\Test\PHPUnit\SetUpAutowire;
use Draw\Component\Tester\PHPUnit\Extension\SetUpAutowire\AutowireInterface;use PHPUnit\Framework\TestCase;
#[\Attribute(\Attribute::TARGET_PROPERTY)]
class AutowireRandomInt implements AutowireInterface
{
// This is the priority of the autowire. The higher the number the sooner it will be called.
// This can be important if you need to autowire a property before another one.
public static function getPriority(): int
{
return 0;
}
public function __construct(
private int $min = \PHP_INT_MIN,
private int $max = \PHP_INT_MAX
) {}
public function autowire(TestCase $testCase, \ReflectionProperty $reflectionProperty): void
{
$reflectionProperty->setValue(
$testCase,
random_int($this->min, $this->max)
);
}
}
namespace App\Tests;
use App\Test\PHPUnit\SetUpAutowire\AutowireRandomInt;
class MyTest extends KernelTestCase
{
#[AutowireRandomInt(1, 10)]
private int $randomInt;
}
xml
<phpunit bootstrap="vendor/autoload.php">
<extensions>
<bootstrap class="Draw\Component\Tester\PHPUnit\Extension\CarbonReset\CarbonResetExtension"/>
</extensions>
</phpunit>
xml
<phpunit bootstrap="vendor/autoload.php">
<extensions>
<bootstrap class="Draw\Component\Tester\PHPUnit\Extension\SetUpAutowire\SetUpAutowireExtension"/>
</extensions>
</phpunit>
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.