PHPUnit getMock () с пространством имен - PullRequest
7 голосов
/ 11 августа 2009

Мои поиски начала использования пространств имен в PHP продолжаются. На этот раз PHPUnit доставляет мне проблемы. Мой метод setup () выглядит следующим образом:

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

Метод getMock () приводит только к тому, что PHP ищет класс NonPersistentStorage. Не в пространстве имен.

Q: Что мне нужно изменить, чтобы метод getMock () искал класс в пространстве имен?

Редактировать: Двойная обратная косая черта не проблема. Также см .: руководство : (цитата)

'Внутри строки в одинарных кавычках escape-последовательность обратной косой черты гораздо безопаснее использовать, но все же рекомендуется избегать обратной косой черты во всех строках в качестве наилучшей практики.'

edit: Что сработало для меня, так это в комментариях к ответу Игнаса Р.

Ответы [ 3 ]

4 голосов
/ 15 апреля 2011

используйте эту строку вместо (без двойной обратной косой черты):

$mock = $this->getMock('\MyNamespace\NonPersistentStorage');
2 голосов
/ 11 августа 2009

Строковые ссылки на классы обычно не имеют обратной косой черты. Попробуйте удалить его и сообщите нам, работает ли он.

РЕДАКТИРОВАТЬ: и, если это не так, попробуйте class_alias , чтобы создать псевдоним в глобальном пространстве имен для этого класса. Однако это было бы уродливым решением ...

0 голосов
/ 06 ноября 2010

Я думаю, что вы можете решить свою проблему, включая класс \ MyNamespace \ NonPersistentStorage в своем тестовом файле.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...