我想在ApiPlatform中进行一些功能测试。当我使用邮递员插入用户时,我没有问题。但是,当我使用测试用例时,会显示以下错误消息:
未捕获的PHP异常Doctrine \ ORM \ ORMInvalidArgumentException:“未通过关联'App \ Entity \ User#profile'找到一个新实体,该关系未配置为级联实体的持久操作:App \ Entity \ Profile @ 000000004079006a00000000554e4576。解决此问题:在此未知实体上显式调用EntityManager#persist()或配置级联可将该关联保留在映射中,例如@ManyToOne(..,cascade = {“ persist”})。问题实现“ App \ Entity \ Profile #__ toString()”以获取线索。”
这是我的测试代码:
<?php
namespace App\Tests;
use ApiPlatform\Core\Bridge\Symfony\Bundle\Test\ApiTestCase;
use Symfony\Bundle\FrameworkBundle\Test\WebTestCase;
use App\Entity\User;
class UsersTest extends ApiTestCase
{
public function testCreateBook(): void
{
$response = static::createClient()->request('POST', '/api/users', ['json' => [
'email' => '0099740915',
'username' => 'The Handmaid\'s Tale',
'password' => 'test',
'profile' => [
'firstName' => 'Test FirstName'
]
]]);
$this->assertResponseStatusCodeSame(201);
}
}
我的phpunit配置如下:
<?xml version="1.0" encoding="UTF-8"?>
<phpunit xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="bin/.phpunit/phpunit.xsd"
backupGlobals="false"
colors="true"
bootstrap="config/bootstrap.php"
>
<php>
<ini name="error_reporting" value="-1" />
<server name="APP_ENV" value="test" force="true" />
<server name="SHELL_VERBOSITY" value="-1" />
<server name="SYMFONY_PHPUNIT_REMOVE" value="" />
<server name="SYMFONY_PHPUNIT_VERSION" value="7.5" />
</php>
<testsuites>
<testsuite name="Project Test Suite">
<directory>tests</directory>
</testsuite>
</testsuites>
<filter>
<whitelist>
<directory>src</directory>
</whitelist>
</filter>
<listeners>
<listener class="Symfony\Bridge\PhpUnit\SymfonyTestsListener" />
</listeners>
</phpunit>
我从ApiPlatform获得了以下文档:https://api-platform.com/docs/distribution/testing/
我不知道,为什么使用TestCase不能正常工作。有人有主意吗? 在Postman上,所有人都在正常工作
感谢您的帮助