我有一對夫婦的測試在我的測試套件Zend_Test正在運行PHPUnit的Mock對象替換真實類
一個測試通過創建PHPUnit的MockBuilder的Foo_Bar_Baz
一個模擬作爲類的依賴。現在在Foo_BAR_baz
的測試中(案例中的更改是有意的,並且由於自動加載而是必要的),我沒有得到類,而是模擬的實例,這顯然不起作用。
對物體做var_dump
的結果是class Foo_Bar_Baz#27115(0) { }
,所以它似乎是在創建一個模擬實例。
解決模擬中的問題可以讓事情按預期工作。我以前從來沒有在模擬對象中看到過這種行爲。出於某種原因,模擬類正在被加載到PHP中,以便當下一個測試嘗試實例化實際對象時,它會實例化模擬。爲什麼會發生這種情況?
「我沒有上課,而是模擬的一個實例」 - 你能澄清一下嗎?你的代碼(而不是測試)正在實例化一個對象,你期望它是一個什麼樣的實例,你到底得到了什麼? – 2013-05-02 20:50:43
閱讀了幾次之後,這可能會有所幫助:如果你正在創建一個模擬類,並在真實的具體類之後命名它,那麼你永遠無法獲得具體的類到內部註冊表中。 – 2013-05-02 20:53:58
我能夠得到類名相同的具體類。只有當它們與我的例子不同時它纔會起作用。通常這在PHPUnit中工作,除非在這種非常奇怪的情況下。 – Schleis 2013-05-02 20:56:57