Pregunta

Estoy tratando de burlarme de algunas fachadas en Laravel durante las pruebas unitarias, pero parece que las pruebas siempre pasan pase lo que pase.

Por ejemplo, este ejemplo tomado de los documentos de Laravel aquí:

Event::shouldReceive('fire')->once()->with('foo', array('name' => 'Dayle'));

Parece que puedo poner eso en cualquiera de los métodos de prueba y siempre pasan aunque no se haya hecho nada por el estilo con el Event fachada.

Aquí está la clase de prueba:

class SessionsControllerTest
extends TestCase
{    
    public function test_invalid_login_returns_to_login_page()
    {
        // All of these pass even when they should fail
        Notification::shouldReceive('error')->once()->with('Incorrect email or password.');
        Event::shouldReceive('fire')->once()->with('foo', array('name' => 'Dayle'));
        Notification::shouldReceive('nonsense')->once()->with('nonsense');

        // Make login attempt with bad credentials
        $this->post(action('SessionsController@postLogin'), [
            'inputEmail'     => 'bademail@example.com',
            'inputPassword'  => 'badpassword'
        ]);

        // Should redirect back to login form with old input
        $this->assertHasOldInput();
        $this->assertRedirectedToAction('SessionsController@getLogin');
    }

}

¿Qué me falta para poder probar Fachadas?¿Tengo razón al pensar que debería poder llamar? shouldReceive() en cualquier fachada Laravel sin ninguna configuración?

¿Fue útil?

Solución

Debes decirle a Mockery que ejecute su verificación.Puedes hacerlo poniendo

\Mockery::close();

Ya sea al final de su método de prueba o en el método de desmontaje de su clase de prueba.

Alternativamente, puedes configurar la integración de phpunit de Mockery agregando esto a tu phpunit.xml

<listeners>
  <listener class="\Mockery\Adapter\Phpunit\TestListener"></listener>
</listeners>

Ver http://docs.mockery.io/en/latest/reference/phpunit_integration.html para mayor información.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top