2017-01-01 5 views
0

私はクラスをテストしようとしています。最後のものを除いてすべてのメソッドがテストされていますが、これは同じクラスの別のメソッドを呼び出すため、戻り値を使用してユーザーに文字列を返します。私は$this->getElapsedTime()が5または6のような設定値を返すことを確認する必要があり、それをテストするためにメソッド内の関数呼び出しの戻り値を操作するモッククラス

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

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

は、私はモックでこれをやろうとしてきたが、それは働いていない、それはnullを返しひとつひとつ時間。

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()); 
} 

ここでは何が欠けていますか?申し訳ありませんが、私はPHPUnitを使い始めています。ちょっと圧倒しています。

答えて

0

このように動作するようになりました。setMethodsをメソッドの名前で単純に使用しました。これはまだ働いていたが、それはした。

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()); 
} 
関連する問題