Reputation: 306
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
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
Reputation: 521
Extend the Laravel version of the TestCase
use Tests\TestCase;
Hope this helps
Upvotes: 5