1. Go to this page and download the library: Download innmind/black-box-symfony 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/ */
use Innmind\BlackBox\{
Set,
Property,
Runner\Assert,
Symfony\Application,
};
/**
* @implements Property<Application>
*/
final class Login implements Property
{
public static function any(): Set
{
return Set\Elements::of(new self);
}
public function applicableTo(object $app): bool
{
return true;
}
public function ensureHeldBy(Assert $assert, object $app): object
{
response = $app
->json()
->post('/login', [
'username' => 'john',
'password' => 'doe',
]);
$response
->statusCode()
->is(200);
$content = $response->body()->json();
$assert
->array($content)
->hasKey('token');
$token = $content['token'];
$app
->get('/me')
->statusCode()
->is(200);
return $app;
}
}
use Innmind\BlackBox\{
Set,
Properties,
Runner\Assert,
Symfony\Application,
};
return static function() {
yield proof(
'Login',
given(Login::any()),
function(Assert $assert, Login $login) {
$app = Application::new($assert);
$login->ensureHeldBy($assert, $app);
},
);
// and you can even test a sequence of properties to simulate a user actions
yield proof(
'No user interaction should crash the app',
given(Set\Properties::any(
Login::any(),
AnotherProperty::any(),
// etc...
)),
function(Assert $assert, Properties $properties) {
$app = Application::new($assert);
$properties->ensureHeldBy($assert, $app);
},
);
}
declare(strict_types = 1);
;
use Innmind\BlackBox\PHPUnit\Load;
use Symfony\Component\Dotenv\Dotenv;
(new Dotenv())->bootEnv('.env', 'test');
Application::new($argv)
->disableMemoryLimit()
->scenariiPerProof(1)
->tryToProve(Load::directory('tests/'))
->exit();
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.