2009-08-11 17 views
7

PHPで名前空間を使用し始めるのを楽しみにしています。今回PHPUnitは私に問題をもたらします。マイセットアップ()メソッドは、このようなものです:名前空間を持つPHPUnit getMock()

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

getMock()メソッドのみNonPersistentStorageクラスを探しているPHPになります。名前空間内にはありません。

Q:getMock()メソッドが名前空間内のクラスを探すためには、何を変更する必要がありますか?

編集:ダブルバックスラッシュは問題ではありません。 the manual:(引用)

'バックスラッシュエスケープシーケンスは一重引用符で囲まれた文字列の方がはるかに安全ですが、ベストプラクティスとしてすべての文字列のバックスラッシュをエスケープすることをお勧めします。

編集:クラスは、一般的にリードバックスラッシュを持っていないと私のために働いた何がイグナスR.

答えて

2

文字列参照の答えのコメントです。それを削除し、それが動作するかどうか教えてください。

EDIT:、そうでない場合は、class_aliasを試して、そのクラスのグローバル名前空間にエイリアスを作成してください。しかし、それは醜い解決策になります...

+0

を試みたが、動作しません。 – koen

+0

"バックスラッシュを先導する"という言葉は、バックスラッシュの両方を意味していましたが、とにかくそれを理解してくれることを願っています。 –

+0

おっと、申し訳ありません。それはどちらの場合でも動作しません。 – koen

-2

私はあなたのテストファイル内のクラス\ MyNamespace \ NonPersistentStorageを含むあなたの問題を解決できると思います。

+3

私はあなたがクラスを嘲笑することの全ポイントを見逃していると思います。 –

2

使用(ダブルバックスラッシュなし)の代わりにこの文字列:

$mock = $this->getMock('\MyNamespace\NonPersistentStorage'); 
関連する問題