8

我对开始在 PHP 中使用命名空间的追求仍在继续。这次 PHPUnit 给我带来了问题。我的 setup() 方法是这样的:

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

getMock() 方法只会导致 PHP 寻找 NonPersistentStorage 类。不在命名空间内。

问:要让 getMock() 方法在命名空间中查找类,我需要进行哪些更改?

编辑:双反斜杠不是问题。另请参阅:手册:(引用)

'在单引号字符串中,反斜杠转义序列使用起来更安全,但仍建议将所有字符串中的反斜杠作为最佳实践进行转义。

编辑:对我有用的是对 Ignace R 答案的评论。

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

I think that you can solve your problem including the class \MyNamespace\NonPersistentStorage in your test file.

于 2010-11-06T03:16:45.220 回答