He creado una prueba de comando de consola realmente básica siguiendo los docs:

<?php

namespace Tests\Feature;

use PHPUnit\Framework\TestCase;

class QueueJobCommandTest extends TestCase
{


    /**
     * Test a job argument is requied
     *
     * @return void
     */
    public function testNoArgumentsIsError()
    {
        $this->artisan('queue:job')
            ->expectsOutput('No job specified')
            ->assertExitCode(0);
    }
}

Pero cuando ejecuto phpunit me sale el error:

Error: Call to undefined method Tests\Feature\QueueJobCommandTest::artisan()

Cualquier ayuda sobre por qué {{X 0}} no está definida será muy apreciada.

0
JordinB 31 dic. 2019 a las 17:05

2 respuestas

Extienda la versión Laravel de TestCase

use Tests\TestCase;

Espero que esto ayude

2
Ben96 31 dic. 2019 a las 14:11

Debe extender TestCase desde Laravel, que incluye todas las funciones de Laravel. La documentación es realmente buena en ese punto.

https://laravel.com/docs/5.8/testing

<?php

namespace Tests\Unit;

use Tests\TestCase;
use Illuminate\Foundation\Testing\RefreshDatabase;

class ExampleTest extends TestCase
{
    /**
     * A basic test example.
     *
     * @return void
     */
    public function testBasicTest()
    {
        $this->assertTrue(true);
    }
}

Eso debería resolver tu problema. A veces hago una clase donde puedo agregar algunas funciones especiales para la autenticación, por ejemplo, y extender desde esa clase que se extiende desde la clase Laravel TestCase. Luego puede agregar sus funciones personalizadas en esa clase.

0
René Höhle 31 dic. 2019 a las 14:14