unit-testing - test - phpunit
Cómo burlarse de tymondesigns/jwt-auth en Laravel 5? (1)
Acabo de agregar tymondesigns / jwt-auth para admitir token auth y, en consecuencia, mis casos de prueba están fallando porque no hay ningún token en los parámetros de los encabezados. ¿Cómo puedo simular (usando Mockery
) un componente para eludir esto?
Nota: $this->be()
no funciona
Una alternativa es autenticar la solicitud durante la ejecución de la prueba que pasa a un usuario en particular. Así es como lo hizo:
# tests/TestCase.php
/**
* Return request headers needed to interact with the API.
*
* @return Array array of headers.
*/
protected function headers($user = null)
{
$headers = [''Accept'' => ''application/json''];
if (!is_null($user)) {
$token = JWTAuth::fromUser($user);
JWTAuth::setToken($token);
$headers[''Authorization''] = ''Bearer ''.$token;
}
return $headers;
}
Luego en mis pruebas lo uso así:
# tests/StuffTest.php
/**
* Test: GET /api/stuff.
*/
public function testIndex()
{
$url = ''/api/stuff'';
// Test unauthenticated access.
$this->get($url, $this->headers())
->assertResponseStatus(400);
// Test authenticated access.
$this->get($url, $this->headers(User::first()))
->seeJson()
->assertResponseOk();
}
Espero que esto los ayude a todos. Feliz codificación!