2016-04-18 8 views
0

Ich habe das Modell Produkte, die die geschützte Eigenschaft hat $ anhängig = ['category_name']. Dieser Kategoriename wird durch eine getCategoryNameAttribute-Funktion festgelegt. Der Zugriff auf den Endpunkt in meinem Browser funktioniert wie erwartet, jedoch führt der Test dieses Endpunkts über Komponententests zu einem Absturz der Testsequenz.UnitTest schlägt aufgrund der Eigenschaft anhängen (Laravel)

class Product extends Model 
{ 

    protected $table = 'products'; 

    protected $fillable = [ 
     'name', 'category_id', 'durability_id' 
    ]; 

    protected $appends = [ 
     'category_name' 
    ]; 

    public function getCategoryNameAttribute() 
    { 
     return $this->category->name; 
    } 

    public function category() 
    { 
     return $this->belongsTo('App\Models\Category'); 
    } 

} 

Der Endpunkt, den ich teste, zeigt eine Liste aller Produkte (Produkt :: all()). Wenn ich die Eigenschaft anhängig entferne oder einen statischen Wert wie 1 oder 'eins' zurückgebe, wird der Test bestanden.

use Illuminate\Foundation\Testing\DatabaseTransactions; 

class ProductTest extends TestCase 
{ 
    use DatabaseTransactions; 

    public function test_index_shows_a_list() 
    { 
     $this->visit('/api/v1/products'); 
    } 
} 

Fehler: Starttest 'Product :: test_index_shows_a_list'. PHP Fataler Fehler: Maximale Funktion Verschachtelung von '100' erreicht, Abbruch! Ich bin mir nicht sicher, was das Problem ist, da ich neu zu Komponententests bin, aber es hat wahrscheinlich etwas zu tun mit einer Laravel-Beziehung machen .. irgendwelche Ideen?

Antwort

0

Vergewissern Sie sich zuerst, dass Sie Setup Ihre Testcase

public function __construct() 
{ 
    parent::setup(); 
} 

Diese Fehlermeldung speziell von der XDebug Erweiterung kommt.

stellen Sie sicher, dass Sie über xdebug

offen /etc/php5/mods-available/xdebug.ini und fügen xdebug.max_nesting_level = 200

+0

Ich habe eine andere Testfall, der eine Klasse ohne die $ testet anhängt Eigenschaft nisten erhöhen Ihre maximale Funktionen haben. Diese Sequenz läuft gut. Das Hinzufügen der setUp() im Konstrukt der fehlgeschlagenen Testsequenz erzeugt einen weiteren Fehler: "ReflectionException: Class config existiert nicht" –

+0

stellen Sie sicher, dass Sie Ihre maximale Funktionen Verschachtelung über Xdebug erhöhen. Öffne '/ etc/php5/mods-available/xdebug.ini' und füge' xdebug.max_nesting_level = 200' hinzu –

Verwandte Themen