2014-09-02 16 views
5

In questo momento, quando ho installato un nuovo test per la mia applicazione laravel, che si estende dalla base TestCase classelaravel 4.2: Test Case Autoloading

class SomeTest extends TestCase 
{ 
} 

Mi piacerebbe creare una nuova classe di test di base denominata AnotherTestCase, in modo da poter creare casi di test che i metodi di impostazione share/teardown/helper/etc ...

class SomeTest extends AnotherTestCase 
{ 
} 

Tuttavia, quando ho eseguito

phpunit app/tests/SomeTest.php 

ottengo il seguente errore

PHP Fatal error: Class 'AnotherTestCase' not found in /[...]/app/tests/SomeTest.php on line 3 

Questo nonostante il fatto che ho una classe definita a

#File: app/tests/AnotherTestCase.php 
<?php 
class AnotherTestCase extends TestCase 
{ 
} 

Questo è fonte di confusione, dal momento che sembra PHPUnit per caricare automaticamente la classe TestCase.

Devo richiedere manualmente nelle classi di test di base personalizzate, o c'è un modo per dire phpunit sulla mia nuova classe di test di base? Detto in altro modo, perché non PHPUnit automaticamente caricare TestCase, ma non carica automaticamente AnotherTestCase

risposta

7

Si può ovviare a questo errore con l'aggiunta di questo alla vostra composer.json:

"autoload": { 
    "classmap": [ 
     "app/commands", 
     "app/controllers", 
     "app/models", 
     "app/filters", 
     "app/database/migrations", 
     "app/database/seeds", 
     "app/tests/TestCase.php", 
     "app/tests/AnotherTestCase.php" // <-- Add Me 
    ], 
// ... 

Dopo essere sicuri di fare un composer dump-autoload. Ho appena provato questo aggiungendo la seguente classe:

class AnotherTestCase extends TestCase {} 

E modificato uno dei miei test esistenti per usarlo come genitore, invece. Credo che la voce composer.json sia come è possibile caricare TestCase.

+0

Ah, grazie! Per i futuri lettori, nel caso in cui non sia ovvio dalla domanda, Laravel viene fornito con app/test/TestCase.php nel suo file composer.json. Questo è ciò che carica il secondo test case. –

+0

nessun problema. felice di poterti restituire il favore per tutte le mie domande su magento che avevo :) –