有時候在我的代碼,我會檢查,看是否有特定的對象實現的接口:PHPUnit的,嘲笑的接口,和的instanceof
if ($instance instanceof Interface) {};
然而,PHPUnit中創建上述接口的嘲笑,我不能似乎通過了這個測試。
// class name is Mock_Interface_431469d7, does not pass above check
$instance = $this->getMock('Interface');
據我所知,擁有一個名爲Interface的類與實現Interface的類不同,但我不確定如何處理這個問題。我不得不模擬一個實現Interface的具體類嗎?這不會破壞使用可移植界面的目的嗎?
感謝
是的,冷卻器頭爲準。經過一整晚睡眠之後,我意識到我在嘲笑對象時並未使用完全限定的命名空間。 – 2010-07-15 13:53:03
略有不同的用例,但我可以檢查一個實例是類的實例還是類的模擬實例。 – kapad 2013-08-24 21:51:23
@kapad您會發現,這是多態性的主要觀點,您不必知道當前對象是否爲class或mock的實例。如果你仍然需要知道,那麼你做錯了什麼。 P.S.只是FYI你可以使用[get_class](http://ca1.php.net/manual/en/function.get-class.php)函數來知道對象的確切類名 – dVaffection 2013-10-02 22:47:48