2017-01-01 3 views
0

Ich versuche, eine Klasse zu testen, jede Methode ist mit Ausnahme der letzten getestet, diese ist ein bisschen schwierig für mich, weil es eine andere Methode in der gleichen Klasse aufruft und verwendet den Rückgabewert, um dem Benutzer eine Zeichenfolge zurückzugeben.Mock-Klasse zu manipulieren Rückgabewert von Funktionsaufruf in Methode

/** 
* Get the total time elapsed as a 
* human readable string 
* 
* @return string 
*/ 
public function getElapsedTimeString() 
{ 
    $elapsed = $this->getElapsedTime(); 

    return "{$elapsed} seconds elapsed."; 
} 

Um es zu testen i sicherstellen müssen, dass $this->getElapsedTime() einen eingestellten Wert wie 5 oder 6 zurück, ich habe dies versucht, mit Mocks zu tun, aber es funktioniert nicht, gibt es null jedes einzelne Zeit.

public function testGetElapsedTimeStringMethod() 
{ 
    // Create Mock of the CarbonTimer class 
    $mock = $this->getMockBuilder(CarbonTimer::class) 
     ->getMock(); 

    // Configure the Mock Method 
    $mock->method('getElapsedTime') 
     ->willReturn(5); 

    $this->assertEquals("5 seconds elapsed.", $mock->getElapsedTimeString()); 
} 

Was fehlt mir hier? Sorry im Voraus, wenn es eine dumme Frage ist, ich bin gerade mit PHPUnit und es ist ein wenig überwältigend

Antwort

0

Es funktioniert so, einfach setMethods mit dem Namen der Methode, die ich wollte, override, keine Ahnung, warum Das hat noch funktioniert, aber es hat funktioniert.

public function testGetElapsedTimeStringMethod() 
{ 
    // Create Mock of the CarbonTimer class 
    $stub = $this->getMockBuilder(CarbonTimer::class) 
     ->setMethods(['getElapsedTime']) 
     ->getMock(); 

    // Configure the Mock Method 
    $stub->method('getElapsedTime') 
     ->willReturn(5); 

    $this->assertEquals("5 seconds elapsed.", $stub->getElapsedTimeString()); 
} 
Verwandte Themen