Comparte:
Testear controlador que usa interfaz en servicio.
Hola buenas tardes, ¿Cómo puedo testear el controlador usando el patrón repositorio sabiendo que la interfaz y el repositorio están inyectadas en el app service provider?
Me arroja el siguiente error:
Mockery\Exception\BadMethodCallException: Received Mockery_1_App_Http_Controllers_API_GatewayController::myPayments(), but no expectations were specified
Tengo el proyecto estructurado así:
1. En service provider:
Me arroja el siguiente error:
Mockery\Exception\BadMethodCallException: Received Mockery_1_App_Http_Controllers_API_GatewayController::myPayments(), but no expectations were specified
Tengo el proyecto estructurado así:
1. En service provider:
$this->app->bind('App\Http\Interfaces\GatewayInterface', 'App\Http\Services\GatewayService');
2. Inyecto la interfaz en el constructor del controlador para llamarla en el método
public function myPayments(App\Http\Requests\MyPaymentsFormRequest $request)
{
return $this->interface->myPayments($request);
}
3. Y luego la interface llama el metodo del servicio:
public function myPayments(App\Http\Requests\MyPaymentsFormRequest $request)
{
// ...
return Resource($collection);
}
4. El test lo tengo así:
public function setUp(): void
{
parent::setUp();
$this->interface = Mockery::mock(GatewayInterface::class);
$this->controller = Mockery::mock(GatewayController::class);
}
public function testMyPayments()
{
$request = Mockery::mock(MyPaymentsFormRequest::class);
$this->interface->shouldReceive('myPayments')->with($request)->once()->andReturnSelf();
$this->controller->myPayments($request);
}
Le agradezco su colaboración para saber que me falta para que funcione. Gracias