1. Go to this page and download the library: Download hackpack/hackunit 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/ */
hackpack / hackunit example snippets
namespace My\Namespace\Test;
use HackPack\HackUnit\Contract\Assert;
class MySuite
{
<<Test>>
public function testSomething(Assert $assert) : void
{
// Do some testing here!
$assert->int(2)->not()->eq(3);
$assert
->whenCalled(() ==> {throw new \Exception(‘bad error)})
->willThrowClassWithMessage(\Exception::class, ‘bad error’)
;
}
}
namespace My\Namespace\Test;
use HackPack\HackUnit\Contract\Assert;
class MyAsyncSuite
{
<<Test>>
public async function testSomething(Assert $assert) : Awaitable<void>
{
// Make some async DB calls here as part of your test!
$user = await get_user();
// Or maybe an async curl call
$result = await get_external_user($user->id, 'api password');
$assert->string($result['user_name'])->is('expected username');
}
}
class MySuite
{
<<Setup(‘suite’)>>
public function setUpSuite() : void
{
// Suite level Setup methods must be class (static) methods
// Perform tasks before any tests in this suite are run
}
<<Setup(‘test’)>>
public function setUpTest() : void
{
// Perform tasks just before each test in this suite is run
}
<<Setup>>
public function setUpTestAgain() : void
{
// Multiple set up methods may be defined
// If there are no parameters to the setup attribute, the method is treated like a test setup
}
}
class MySuite
{
<<TearDown(‘suite’)>>
public static function cleanUpAfterSuite() : void
{
// Suite level TearDown methods must be class (static) methods
// Perform tasks after all tests in this suite are run
}
<<TearDown(‘test’)>>
public function cleanUpAfterTest() : void
{
// Perform tasks just after each test in this suite is run
}
<<TearDown>>
public function cleanUpMoarStuff() : void
{
// This is also a ‘test’ teardown method
}
}
class SuiteWithProviders
{
<<SuiteProvider('One')>>
public static function() : this
{
$someDependency = new TestDoubleOne();
return new static($someDependency);
}
<<SuiteProvider('Two')>>
public static function() : this
{
$someDependency = new TestDoubleTwo();
return new static($someDependency);
}
<<Test('One')>>
public function testOne(Assert $assert) : void
{
// Do some assertions using TestDoubleOne
}
<<Test('Two')>>
public function testTwo(Assert $assert) : void
{
// Do some assertions using TestDoubleTwo
}
}
use \HackPack\HackUnit\Contract\Assert;
<<Skip>>
class SkippedSuite
{
// All methods here would be skipped
}
class MySuite
{
<<Test, Skip>>
public function skippedTest(Assertion $assert) : void
{
// This will not be run and the test will be marked skip in the report.
}
<<Test>>
public function skipFromMiddleOfTest(Assert $assert) : void
{
// This will be run
$assert->skip();
// This will not be run and the test will be marked skip in the report.
}
}
class TestThatUsesData {
<<DataProvider('csv values')>>
public static function loadCsvValues(): AsyncIterator<array<string>>
{
$asynCsvLoader = new AsyncCsvLoader('/path/to/data.csv');
foreach($asyncCsvLoader await as $line) {
yield $line;
}
}
<<Test, Data('csv values')>>
public function testCsvValues(Assert $assert, array<string> $line): void
{
// Do assertions using the data from the csv file.
}
<<DataProvider('simple count')>>
public static function count(): Traversable<int>
{
return Vector{1, 2, 3, 4, 5};
}
<<Test, Data('simple count')>>
public function countingTest(Assert $assert, int $count): void
{
// This test will be run five times, once for each of the values in the vector above.
}
}
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.