我对新版本的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完成其业务之前触发拆解方法从未尝试过寻找真正的解决方案。