2015-11-09 15 views
25

Bir soketten veri almak için bir Artisan Komutu yapıyorum ve bu komut için bir birim testi yazmak istiyorum ancak böyle bir testi nasıl yazacağımı bilmiyorum.Laravel'de Artisan Komutlarını Test Etme 5

Bunu nasıl yazacağına dair bir fikir? Test

<?php 

use Illuminate\Foundation\Testing\WithoutMiddleware; 
use Illuminate\Foundation\Testing\DatabaseMigrations; 
use Illuminate\Foundation\Testing\DatabaseTransactions; 

class YourCommandTest extends TestCase 
{ 
    use DatabaseTransactions; 

    public function testExample() 
    { 
     Artisan::call('your_command', [ 
      'command_parameter_1' => 'value1', 
      'command_parameter_2' => 'value2', 
     ]); 

     // If you need result of console output 
     $resultAsText = Artisan::output(); 

     $this->assertTrue(true); 
    } 

} 
+1

http://laravel.com/docs/master/artisan#calling-commands-via-code? – andrewtweber

+0

http://stackoverflow.com/questions/34814954/laravel-5-console-artisan-command-unit-tests – bernie

+0

Bu benim için daha iyi bir yaklaşımdı: https://stackoverflow.com/a/41122816/470749 – Ryan

cevap

28

Örnek Artık çok daha kolaydır:

<?php 

class YourCommandTest extends TestCase 
{ 

    public function testExample() 
    { 
     $this->artisan('command', ['param' => 'value']); 
    } 

} 
+1

Bulundu Bu yaklaşım kabul testi için basit ve yararlıdır. Ancak, komutun kendisi için kod kapsamı kaydetmez. – alariva

+1

Kapsam raporu oluşturmak için '--coverage-html' seçeneği ile testler yapıyorum: phpunit --coverage-html coverage_path'. Ve iç komut olarak adlandırılan yöntemlerin kapsamını görüyorum. – mnv

+0

Bu ilginç, onları neden örtbas etmediğimi anlamıyorum. İşte [aynı durumda onu bulmak durumunda benim soru] (http://stackoverflow.com/questions/38032285/which-is-an-acceptable-approach-for-testing-commands-in-laravel-5-2- ile-PHPUnit). – alariva

10

ait

+0

İddialarınız nerede? Ne için iddia ediyorsun? – Mkey