2014-01-31 54 views
0

這是一個代碼示例:PHPUnit的@depends註釋和MockObject

class TestTest extends \PHPUnit_Framework_TestCase 
{ 
    public function testFirst() { 
     $factory_mock = 
      $this->getMockBuilder('Factory') 
       ->disableOriginalConstructor() 
       ->disableOriginalClone() 
       ->getMock(); 

     $factory_mock 
      ->expects($this->any()) 
      ->method('getData') 
      ->will($this->returnValue('123')); 

     var_dump($factory_mock->getData()); 
     var_dump($factory_mock->getData()); 

    return $factory_mock; 
} 

    /** 
    * @depends testFirst 
    */ 
    public function testSecond(Factory $factory) { 
     var_dump($factory->getData()); 
    } 

} 

這是結果,我們得到:

.string(3) "123" 
    string(3) "123" 
    .NULL 

我預計第三 「的getData」 方法調用給我與前兩個相同的結果,但它不會發生。我不明白爲什麼。請分享您關於PhpUnit內部工作的知識。

PHPUnit的v3.7.29,PHP v5.4.23

回答

1

如果你在兩個測試中做你的模擬工廠的var_dump你會看到的第一個具有PHPUnit_Framework_MockObject_InvocationMocker和第二測試屬性空值。模擬方法在測試完成後重置。所以你最終得到一個沒有設置方法的模擬器。

+0

非常感謝! – Keksinautin