Модульное тестирование с PHPUnit & Doctrine2: автозагрузка не удалась - PullRequest
0 голосов
/ 25 декабря 2010

Я получаю эту ошибку

D:\Projects\Tickle\tests>phpunit
PHPUnit 3.5.5 by Sebastian Bergmann.

..........ok1
Fatal error: Doctrine\Common\ClassLoader::loadClass(): Failed opening required 'D:\Projects\Tickle\Application\Models\Ap
plication\Models\User.php' (include_path='D:\Projects\Tickle\application/../library;D:\Projects\Tickle\application;D:\Pr
ojects\Tickle\library;D:\ResourceLibrary\Frameworks\PHPFrameworks;C:\Program Files (x86)\PHP\pear;.;c:\php\includes') in
 D:\ResourceLibrary\Frameworks\PHPFrameworks\Doctrine\Common\ClassLoader.php on line 148

Обратите внимание на ее повторение "D:\Projects\Tickle\Application\Models\Application\Models\User.php" из Application\Models.Я сузил его до 1 функции моих модульных тестов с помощью некоторых echo операторов

protected function isAllowed($userId, $taskId, $privilege) {
  $user = $this->em->find('Application\Models\User', $userId);
  echo 'ok1'; // this gets printed
  $task = $this->em->find('Application\Models\Task', $taskId); // this seem to be the cause of the problem
  echo 'ok2'; // this doesn't get printed
  return $this->acl->isAllowed($user, $task, $privilege);
}

Полный класс http://pastebin.com/rJungFvP

Поэтому я попытался найти что-то в Задачахкласс, который использует User ... единственное, что может использовать класс User, это

/**
 * @ManyToOne(targetEntity="User", inversedBy="ownedTasks")
 */
protected $owner;

/**
 * @ManyToOne(targetEntity="User", inversedBy="assignedTasks")
 */
protected $assigned;

, кроме того, я не вижу использования каких-либо пользователей.полный класс http://pastebin.com/wDPXUPSV.

Что я сделал не так?

1 Ответ

0 голосов
/ 25 декабря 2010

Проблема была обнаружена в классе TodoList ... У меня было что-то вроде

public function setProject(Application\Models\Project $project) {
  ...
}

когда я должен использовать что-то вроде

public function setProject(Project $project) {
  $this->project = $project;
}

вместо

...