2014-04-08 67 views
0

我有以下單元測試,但我沒有找回所需的值。也許我不明白這是如何正確工作的。PHPUnit存根不返回所需的值

class TestClass 
{ 
    public function getData() 
    { 
     $id = 1123; 
     return $id; 
    } 
} 

class Test_ClassTesting extends PHPUnit_Framework_TestCase 
{ 

    public function test_addData() 
    { 
     $stub = $this->getMock('TestClass'); 


     $stub 
      ->expects($this->any()) 
      ->method('getData') 
      ->will($this->returnValue('what_should_i_put_here_to_get id from TESTCLASS')); 


     $y = $stub->getData(); 

    } 
} 
+0

這是不是很清楚你要完成什麼。如果你想要一個存根,然後在'returnValue'中硬編碼一個存根值。如果你想獲得'1123'的值,那麼就實例化'TestClass'並放棄模擬/存根的使用。 –

+0

你也不清楚你想要測試什麼,因爲你的代碼段沒有斷言。 –

+0

你的代碼片段工作正常。你應該把''this-> returnValue()'中的參數放在你的測試中 – Schleis

回答

0

正如評論者所說,你只需返回所需的值。

class TestClass 
{ 
    public function getData() 
    { 
     $id = 1123; 
     return $id; 
    } 
} 

class Test_ClassTesting extends PHPUnit_Framework_TestCase 
{ 
    public function test_addData() 
    { 
     $stub = $this->getMock('TestClass'); // Original Class is not used now 
     $stub 
      ->expects($this->any()) 
      ->method('getData') 
      ->will($this->returnValue(4444)); // Using different number to show stub works, not actual function 
     $this->assertEquals(4444, $stub->getData()); 
    } 

    public function test_addDataWithoutStub() 
    { 
     $object = new TestClass(); 
     $this->assertEquals(1123, $object->getData()); 
    } 
}