2009-08-11 111 views
7

我在PHP中開始使用命名空間的任務不斷。這次PHPUnit給我帶來了問題。我的設置()方法是這樣的:PHPUnit getMock()與命名空間

$test = new \MyNamespace\NonPersistentStorage(); // works 
$mock = $this->getMock('\\MyNamespace\\NonPersistentStorage'); // doesn't work 

的getMock()方法只會導致PHP尋找NonPersistentStorage類。不在名稱空間內。

問:爲了讓getMock()方法在命名空間中查找類,需要更改哪些內容?

編輯:雙反斜槓不是問題。另請參閱:the manual:(引用)

'在單引號字符串中,反斜槓轉義序列使用起來更爲安全,但仍建議在所有字符串中反斜槓作爲最佳做法。

編輯:什麼工作對我來說是伊尼亞斯R.

回答

2

字符串參考答案的意見班一般不具備領先的反斜槓。嘗試刪除它,並告訴我們它是否工作。

編輯:如果沒有,嘗試class_alias在該類的全局名稱空間中創建一個別名。然而,這將是一個醜陋的解決方案...

+0

試過,但不起作用。 – koen 2009-08-11 18:32:07

+0

那麼,通過「引導反斜槓」,我的意思是兩個反斜槓,但我希望你無論如何都能理解它。 – 2009-08-11 18:34:46

+0

哎呀,對不起。它雖然不起作用。 – koen 2009-08-11 18:36:39

-2

我認爲你可以解決你的問題,包括類\ MyNamespace \ NonPersistentStorage在你的測試文件。

+3

我認爲你錯過了嘲笑類的全部觀點。 – 2014-08-07 17:38:47

2

使用此字符串,而不是(不帶雙反斜線):

$mock = $this->getMock('\MyNamespace\NonPersistentStorage');