Symfony 4 单元测试 无法删除分离的实体



我对新版本的symfony,symfony 4有一些麻烦。

我正在尝试测试一个休息 api,但我有这个错误。

Doctrine\ORM\ORMInvalidArgumentException: 无法删除分离的实体 App\Entity\User@000000005b034b8800000000320e4469

在我的单元测试中,我创建了一个用户,然后在拆解中我想清理数据库。

单元测试:

namespace AppController;
use AppEntityUser;
use SymfonyBundleFrameworkBundleTestWebTestCase;
class UserControllerTest extends WebTestCase
{
    /**
     * @var DoctrineORMEntityManager
     */
    private $em;
    /**
     * {@inheritDoc}
     */
    protected function setUp()
    {
        $kernel = self::bootKernel();
        $this->em = $kernel->getContainer()
            ->get('doctrine')
            ->getManager();
    }
    protected function tearDown()
    {
        parent::tearDown();
        $users = $this->em->getRepository(User::class)->findAll();
        foreach ($users as $user) {
            $this->em->remove($user);
            $this->em->flush($users);
        }
        $this->em->close();
        $this->em = null; // avoid memory leaks
    }
    public function testGetAllEmpty()
    {
        $client = static::createClient();
        $client->request('GET', '/users');
        $this->assertEquals(200, $client->getResponse()->getStatusCode());
        $this->assertEquals([], json_decode($client->getResponse()->getContent()));
    }
    public function testGetAllNotEmpty()
    {
        $this->createUser();
        $client = static::createClient();
        $client->request('GET', '/users');
        $this->assertEquals(200, $client->getResponse()->getStatusCode());
        $content = json_decode($client->getResponse()->getContent(), true);
//        $this->assertCount(1, $content);
//        var_dump($content);
//        $this->assertCount(1, $content["pseudo"]);
    }
    public function createUser()
    {
        $user = new User();
        $user->setPseudo('mitsi');
        $user->setPassword('dev');
        $this->em->persist($user);
        $this->em->flush();
        return $user;
    }
}

控制器

<?php
namespace AppController;

use AppEntityUser; use SymfonyBundleFrameworkBundleControllerController; use SymfonyComponentHttpFoundationJsonResponse; use SymfonyComponentHttpFoundationRequest;
class UserController extends Controller {
    public function getAll()
    {
        return new JsonResponse($this->getDoctrine()->getRepository(User::class)->findAll());
    }
    public function get($id)
    {
    }
    public function add(Request $request)
    {
    }
    public function edit($id)
    {
    }
    public function delete($id)
    {
    } 
}

用户

<?php
namespace AppEntity;
use DoctrineORMMapping as ORM;
/**
 * @ORMEntity(repositoryClass="AppRepositoryUserRepository")
 */
class User
{
    /**
     * @ORMId
     * @ORMGeneratedValue
     * @ORMColumn(type="integer")
     */
    private $id;
    /**
     * @ORMColumn(type="string", length=255)
     */
    private $pseudo;
    /**
     * @ORMColumn(type="string", length=255)
     */
    private $password;
    /**
     * @return mixed
     */
    public function getId()
    {
        return $this->id;
    }
    /**
     * @return mixed
     */
    public function getPseudo()
    {
        return $this->pseudo;
    }
    /**
     * @param mixed $pseudo
     */
    public function setPseudo($pseudo): void
    {
        $this->pseudo = $pseudo;
    }
    /**
     * @return mixed
     */
    public function getPassword()
    {
        return $this->password;
    }
    /**
     * @param mixed $password
     */
    public function setPassword($password): void
    {
        $this->password = $password;
    }
}

问题出在哪里?

谢谢。

好的

,所以我已经实现了其他测试...现在它工作了!

<小时 />

编辑:可以链接到测试框架,在ORM完成其业务之前触发拆解方法从未尝试过寻找真正的解决方案。

最新更新