2016-10-24 2 views
2

wiederverwenden kann Ich habe 2 Testklassen und alle Tests laufen gut. Aber das Problem ist, ich weiß nicht, wie man andere Testklassenmethode wieder verwendet. Es tut mir leid, dass ich neu bei Phpunit bin und bereits auf der Suche bin, und ich kann die Lösung nicht finden.Wie man phpunit Testmethode in Laravel

class A_Test { 

    public function create_something_1() 
    { 
     $this->visit('/a/create') 
      ->type('Name','name') 
      ->press('Submit') 
      ->seeInDatabase('something_1', ['name' => 'Name']); 
     $data = \App\Models\Something1::first(); 

     return $data; 
    } 

} 


class B_Test { 

    public function create_something_2() 
    { 

     // The problem is here, I result of new A_Test always null 
     $a = (new A_Test)->create_something_1(); 

     $this->visit('/b/create') 
      ->select($a->id, 'something_1') 
      ->type('New Name','name') 
      ->press('Submit') 
      ->seeInDatabase('something_2', ['name' => 'New Name']); 

    } 

} 

so für die B_Test, kopiere ich in A_Test Klasse die Methode immer zu arbeiten, wie diese

class B_Test { 

    public function create_something_1() 
    { 
     $this->visit('/a/create') 
      ->type('Name','name') 
      ->press('Submit') 
      ->seeInDatabase('something_1', ['name' => 'Name']); 
     $data = \App\Models\Something1::first(); 

     return $data; 
    } 

    public function create_something_2() 
    { 
     // This is work 
     $a = $this->create_something_1(); 

     $this->visit('/b/create') 
      ->select($a->id, 'something_1') 
      ->type('New Name','name') 
      ->press('Submit') 
      ->seeInDatabase('something_2', ['name' => 'New Name']); 

    } 

} 
+0

Sie erweitern nicht die '' 'TestCase''' Klasse? Es gibt eine '' 'TestCase''' Klasse gibt und Sie können wiederverwendbare Methoden in der' '' hinzufügen TestCase.php''' Datei – aceraven777

+0

ich bereits Testcase erweitern, alle Testarbeiten, brauchen nur einen Weg, um den doppelten Code wiederverwenden. –

Antwort

0

In Ihrem tests/TestCase.php Datei, die Sie dies tun können:

class TestCase extends Illuminate\Foundation\Testing\TestCase 
{ 
    .... 
    protected function create_something_resusable() 
    { 
     $this->visit('/a/create') 
      ->type('Name','name') 
      ->press('Submit') 
      ->seeInDatabase('something_1', ['name' => 'Name']); 
     $data = \App\Models\Something1::first(); 

     return $data; 
    } 
    .... 
} 

dann alle Sie Tests können $this->create_something_resusable() aufrufen, aber denken Sie daran, die TestCase Klasse in allen Tests zu erweitern.

Verwandte Themen