JordinB
JordinB

Reputation: 306

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

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.

Upvotes: 2

Views: 1215

Answers (2)

Ren&#233; H&#246;hle
Ren&#233; H&#246;hle

Reputation: 27305

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.

Upvotes: 0

Benyou1324
Benyou1324

Reputation: 521

Extend the Laravel version of the TestCase

use Tests\TestCase;

Hope this helps

Upvotes: 5

Related Questions