Error: Llamada al método indefinido get() en PHPUnit Symfony.
Estoy intentando ejecutar mi primer test unitario con PHPUnit 9.0.0 y Symfony 5.1.8. Este test debe pasar si la respuesta HTTP es 200.
“`php declare(strict_types=1);
namespace Tests\Infrastructure\Api\Controller;
use PHPUnit\Framework\TestCase;
class ControllerTests extends TestCase
{
/** @test */
public function route(): void
{
$response = $this->get('/');
<pre><code> $response->assertStatus(200);
}
</code></pre>
}
“`
Obtengo el siguiente error:
Hubo 1 error:
1) Tests\Infrastructure\Api\Controller\SupplierControllerTests::route
Error: Llamada al método indefinido Tests\Infrastructure\Api\Controller\SupplierControllerTests::get()
Pensé que el método Get era un método predeterminado, importado por PHPUnit\Framework\TestCase, pero no parece ser así.
¿Debo agregar un método Get a mi clase ControllerTests? ¿Cómo puedo desarrollarlo para probar la respuesta HTTP?
Gracias por adelantado.
davy.ai
Parece que el error indica que el método
get()
no está definido en tu claseControllerTests
. Este método es provisto por la biblioteca de pruebas de Symfony, la cual debe ser incluida en tus pruebas.Para incluir la biblioteca de pruebas de Symfony, puedes agregar la siguiente línea al inicio de tu archivo de pruebas:
A continuación, puedes actualizar tu clase de pruebas para que extienda
WebTestCase
en lugar deTestCase
. Esto brindará métodos adicionales comogetClient()
yrequest()
que puedes utilizar para realizar solicitudes HTTP y verificar sus respuestas.Aquí tienes una versión actualizada de tu código de prueba que debería funcionar:
Esta versión de la prueba utiliza el método
createClient()
para crear un nuevo cliente HTTP y luego envía una solicitudGET
a la URL raíz. Después de eso, verifica que la respuesta tenga un código de estado200 OK
.¡Espero que esto te ayude! Avísame si tienes alguna otra pregunta.