Ad

Missing TestCase::artisan() In Laravel 6.x Command Test

- 1 answer

I've created a really basic console command test following the 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);
    }
}

but when I run phpunit i get the error:

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

Any help as to why TestCase::artisan() is undefined woudl be greatly apprecated.

Ad

Answer

You have to extend the TestCase from Laravel which includes all the Laravel functions. The documentation is really good in that point.

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);
    }
}

That should solve your problem. Sometimes i make a class where i can add some special functions for authentication for example and extend from that class which extends from the Laravel TestCase class. Then you can add your custom functions in that class.

Ad
source: stackoverflow.com
Ad