1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88
|
<?php
namespace Illuminate\Tests\Integration\Console;
use Illuminate\Console\Command;
use Illuminate\Console\Scheduling\Schedule;
use Illuminate\Contracts\Console\Kernel;
use Orchestra\Testbench\TestCase;
class ConsoleApplicationTest extends TestCase
{
protected function setUp(): void
{
parent::setUp();
$this->app[Kernel::class]->registerCommand(new FooCommandStub);
}
public function testArtisanCallUsingCommandName()
{
$this->artisan('foo:bar', [
'id' => 1,
])->assertExitCode(0);
}
public function testArtisanCallUsingCommandClass()
{
$this->artisan(FooCommandStub::class, [
'id' => 1,
])->assertExitCode(0);
}
public function testArtisanCallNow()
{
$exitCode = $this->artisan('foo:bar', [
'id' => 1,
])->run();
$this->assertSame(0, $exitCode);
}
public function testArtisanWithMockCallAfterCallNow()
{
$exitCode = $this->artisan('foo:bar', [
'id' => 1,
])->run();
$mock = $this->artisan('foo:bar', [
'id' => 1,
]);
$this->assertSame(0, $exitCode);
$mock->assertExitCode(0);
}
public function testArtisanInstantiateScheduleWhenNeed()
{
$this->assertFalse($this->app->resolved(Schedule::class));
$this->app[Kernel::class]->registerCommand(new ScheduleCommandStub);
$this->assertFalse($this->app->resolved(Schedule::class));
$this->artisan('foo:schedule');
$this->assertTrue($this->app->resolved(Schedule::class));
}
}
class FooCommandStub extends Command
{
protected $signature = 'foo:bar {id}';
public function handle()
{
//
}
}
class ScheduleCommandStub extends Command
{
protected $signature = 'foo:schedule';
public function handle(Schedule $schedule)
{
//
}
}
|