2013-07-20 104 views
0
public function __call($method, $args) 
{ 
    if (! in_array($method, $this->validMethods)) 
    { 
     throw new \BadMethodCallException("Not a valid method: {$method}"); 
    } 

} 

如何測試__call方法以確保$method在我的有效方法列表中?現在這就是我所做的。測試__call方法

/** 
* @covers World\Transmission::__call() 
* @expectedException BadMethodCallException 
* @expectedExceptionMessage Not a valid method: foo 
*/ 
public function test__callInvalidRequest() 
{ 
    $m = m::mock('World\\Transmission', array($this->config))->makePartial(); 
    $m->foo(array('foo')); 
} 

我得到的錯誤是call_user_func_array()的無盡痕跡。

Maximum function nesting level of '100' reached, aborting!. 
... 
+0

什麼是你的類:'世界\ Transmission' – srain

+0

http://bpaste.net/show/4jaevNSsQrXLVjxyIzF2/ – Michelle

+0

如果刪除'$ m-> foo(array('foo'));',仍然達到100嵌套級別? – srain

回答

1

怎麼樣簡單地改變你的測試代碼,喜歡這些:

public function test__callInvalidRequest() 
    { 
     $transmission = new World\Transmission($this->config); 
     $transmission->foo(); 
    } 
+0

哈哈,男人,我不知道爲什麼我強迫自己使用模擬。 – Michelle