8

PHPで名前空間を使い始めるという私の探求は続きます。今回はPHPUnitで問題が発生します。私のsetup()メソッドは次のようになります。

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

getMock()メソッドは、PHPがNonPersistentStorageクラスを検索する結果になります。名前空間内ではありません。

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

編集:二重の円記号は問題ではありません。参照:マニュアル:(引用)

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

編集:私のために働いたのは、IgnaceRの答えのコメントにあります。

4

3 に答える 3

4

代わりにこの文字列を使用してください(二重の円記号なし):

$mock = $this->getMock('\MyNamespace\NonPersistentStorage');
于 2011-04-15T11:30:31.963 に答える
2

クラスへの文字列参照には、通常、先頭に円記号がありません。それを削除してみて、それが機能するかどうかを教えてください。

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

于 2009-08-11T18:24:21.280 に答える
-3

テストファイルにクラス\MyNamespace\NonPersistentStorageを含めて問題を解決できると思います。

于 2010-11-06T03:16:45.220 に答える