Symfony 2 и класс PhpUnit не найдены

Я заблудился о том, как найти решение для моей проблемы, я уже много искал в интернете (и stackoverflow), но ничего не подходит для меня …

Эта проблема

У меня есть приложение Symfony 2. Я создал тест с PHPUnit, но когда я выполняю тест, у меня есть следующие исключения:

1) RepositoryBundle \ Tests \ DAO \ UserDAOTest :: testCreate
Ошибка: класс ‘RepositoryBundle \ Tests \ DAO \ User’ не найден

И я не знаю почему …

<?php

namespace RepositoryBundle\Tests\DAO;

use RepositoryBundle\Entity;
use RepositoryBundle\DAO;

class UserDAOTest extends \PHPUnit_Framework_TestCase
{
public function testCreate()
{
$user1 = new User();
$user1.setName("TestName");
$user1.setEmail("TestEmail");
$user1.setPassword("TestPassword");
$user1.setMemberNumber(12345);
$user1.setAdmin(true);
$user1.setRole(1);

$UserDAO = FactoryDAO::getInstance("UserDAO");
$user1 = $UserDAO.save($user1);

$this->assertTrue($user1.getId() > 0);
$this->assertEquals("TestName", $user1.getName());
$this->assertEquals("TestEmail", $user1.getEmail());
$this->assertEquals("TestPassword", $user1.getPassword());
$this->assertEquals(12345, $user1.getMemberNumber());
$this->assertEquals(true, $user1.isAdmin());
$this->assertEquals(1, $user1.getRole());
}
}

Строка использования одинакова в другом классе и в порядке.

Для выполнения теста я использую: phpunit -c app /
Мой конфигурационный файл для phpunit:

<?xml version="1.0" encoding="UTF-8"?>
<phpunit xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:noNamespaceSchemaLocation="phpunit.xsd"bootstrap="bootstrap.php.cache"backupGlobals="false"verbose="true">

<testsuites>
<testsuite name="Project Test Suite">
<directory>../src/*Bundle/Tests</directory>

</testsuite>
</testsuites>

<php>
<const name="PHPUNIT_TESTSUITE" value="true"/>
</php>
</phpunit>

В файле композитора у меня есть:

"autoload": {
"psr-4": { "": "src/" },
"classmap": [ "app/AppKernel.php", "app/AppCache.php" ]
},

В AppKernele.php

    $bundles = array(
// The Base Symfony Bundle
new Symfony\Bundle\FrameworkBundle\FrameworkBundle(),
new Symfony\Bundle\SecurityBundle\SecurityBundle(),
new Symfony\Bundle\TwigBundle\TwigBundle(),
new Symfony\Bundle\MonologBundle\MonologBundle(),
new Symfony\Bundle\SwiftmailerBundle\SwiftmailerBundle(),
new Doctrine\Bundle\DoctrineBundle\DoctrineBundle(),
new Sensio\Bundle\FrameworkExtraBundle\SensioFrameworkExtraBundle(),

// Sonata Admin Bundle
new Sonata\CoreBundle\SonataCoreBundle(),
new Sonata\BlockBundle\SonataBlockBundle(),
new Knp\Bundle\MenuBundle\KnpMenuBundle(),
new Sonata\DoctrineORMAdminBundle\SonataDoctrineORMAdminBundle(),
new Sonata\AdminBundle\SonataAdminBundle(),

// Our Bundle
new RepositoryBundle\RepositoryBundle(),
new AdminBundle\AdminBundle(),
);

Так что со всем этим обычно boostrap.php.cache должен быть в порядке, и поэтому почему это не так?

Если вам нужна дополнительная информация, спросите меня. Мне действительно нужна твоя помощь.

1

Решение

Проблема здесь $user1 = new User();
Если ваш класс пользователя расположен в RepositoryBundle\EntityТогда есть 2 решения.

  1. use RepositoryBundle\Entity\User вместо use RepositoryBundle\Entity
  2. $user1 = new Entity\User(); вместо $user1 = new User();

Выберите одно из этих решений, а не оба. Читайте о пространстве имен php для дальнейшего понимания

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]