tutorial skeleton instalar framework con composer rest phpunit slim

skeleton - ¿Cómo escribo pruebas unitarias para una API REST integrada en Slim Framework?



slim framework tutorial pdf (4)

Tengo un API construido en Slim como este:

$app->group(''/''.$endpoint, function () use ($app, $endpoint) { $handler = Api/Rest/Handlers/Factory::load($endpoint); if (is_null($handler)) { throw new /Exception(''No REST handler found for ''.$endpoint); } $app->get(''(/:id)'', function ($id) use ($app, $handler) { echo json_encode($handler->get($id)); }); $app->post('''', function () use ($app, $handler) { echo json_encode($handler->post($app->request->post())); }); $app->put('':id'', function ($id) use ($app, $handler) { echo json_encode($handler->put($id, $app->request->put())); }); $app->delete('':id'', function ($id) use ($app, $handler) { echo json_encode($handler->delete($id)); }); });

$endpoint es una cadena, por ejemplo ''usuario'';

¿Cómo hago para escribir pruebas unitarias para ello?

Idealmente;

class RestUserTest extends PHPUnitFrameworkTestCase { public function testGet() { $slim = ''''; // my slim app // set route ''api/user/1'' with method GET // invoke slim // ensure that what we expected to happen did } }

(La clase de controlador REST haría trivial burlarse de los resultados que normalmente serían respaldados por un DB).

Es el meollo de la cuestión de cómo falsificar la solicitud en Slim que no sé cómo hacer.


Puedes tener una oportunidad con estas pautas . Te puede ayudar. Lo probé para uno de mis proyectos delgados.

Déjame saber si eso ayuda.

Codigos

<?php require_once __DIR__ . ''/../vendor/autoload.php''; use Slim/Environment; class RoutesTest extends PHPUnit_Framework_TestCase { public function request($method, $path, $options = array()) { // Capture STDOUT ob_start(); // Prepare a mock environment Environment::mock(array_merge(array( ''REQUEST_METHOD'' => $method, ''PATH_INFO'' => $path, ''SERVER_NAME'' => ''slim-test.dev'', ), $options)); $app = new /Slim/Slim(); $this->app = $app; $this->request = $app->request(); $this->response = $app->response(); // Return STDOUT return ob_get_clean(); } public function get($path, $options = array()) { $this->request(''GET'', $path, $options); } public function testIndex() { $this->get(''/''); $this->assertEquals(''200'', $this->response->status()); } }

Código completo alojado en Gist. mira esto




puede utilizar Codeception API testing / Unit Testing. Echa un vistazo al siguiente link