Bonjour,
Je rencontre un petit problème avec mon code, je suis actuellement en train de suivre le tutoriel "Le router", je rencontre une petite erreur que je n'arrive pas a résoudre
Fichier Route.php
<?php
namespace App;
class Route {
/**
* @var string
* @var callable
* @var array
*/
private $name;
private $callback;
private $parameters;
public function __construct(string $name, callable $callback, array $parameters) {
}
/**
* @return string
*/
public function getName(): string {
return $this->name;
}
/**
* @return callable
*/
public function getCallback(): callable {
return $this->callback;
}
/**
* Retrieve the URL Parameters
* @return string[]
*/
public function getParams(): array {
return $this->parameters;
}
}
Fichier RouterTest.php
<?php
namespace Tests\App;
use App\Router;
use GuzzleHttp\Psr7\ServerRequest;
use PHPUnit\Framework\TestCase;
class RouterTest extends TestCase {
/**
* @var Router
*/
private $router;
public function setUp() {
$this->router = new Router();
}
public function testGetMethod() {
$request = new ServerRequest('GET', '/blog');
$this->router->get('/blog', function () { return 'hello'; }, 'blog');
$route = $this->router->match($request);
$this->assertEquals('blog', $route->getName());
$this->assertEquals('hello', call_user_func_array($route->getCallback(), [$request]));
}
public function testGetMethodIfURLDoesNotExists() {
$request = new ServerRequest('GET', '/blog');
$this->router->get('/blogaze', function () { return 'hello'; }, 'blog');
$route = $this->router->match($request);
$this->assertEquals(null, $route);
}
public function testGetMethodWithParameters() {
$request = new ServerRequest('GET', '/blog/mon-slug-8');
$this->router->get('/blog', function () { return 'azeaze'; }, 'posts');
$this->router->get('/blog/{slug:[a-z0-9\-]+}-{id:\d+}', function () { return 'hello'; }, 'post.show');
$route = $this->router->match($request);
$this->assertEquals('post.show', $route->getName());
$this->assertEquals('hello', call_user_func_array($route->getCallback(), [$request]));
$this->assertEquals(['slug' => 'mon-slug', 'id' => '8'], $route->getParams());
}
}
Je voudrais que le teste passe au vert
Le teste avec PHPUnit me dit les erreurs suivantes :
TypeError : Return value of App\Router\Route::getName() must be of the type string, null returned
La deuxième
TypeError : Return value of App\Router\Route::getCallback() must be callable, null returned
La troisième
TypeError : Return value of App\Router\Route::getParams() must be of the type array, null returned
Merci d'avance pour votre aide, de mon côté j'essaye de regler cette erreur
Si ça peut aider et que le problème vienne d'une version d'un library, voici les require de mon composer.json
"require": {
"michelf/php-markdown": "1.8.0",
"guzzlehttp/psr7": "^1.5",
"http-interop/response-sender": "^1.0",
"zendframework/zend-expressive-fastroute": "1.2.0"
},
"require-dev": {
"phpunit/phpunit": "^6.2",
"squizlabs/php_codesniffer": "^3.4"
},
Bonjour,
Vu que la réponse à été donner sur OCC et que le constructeur n'est pas rempli.
Tu peux mettre le sujet en résolu.