Symfony NotBlank约束允许空白字符串



我正在使用Symfony5ApiPlatform以及phpunit进行测试

我正在进行现场验证测试。

我的问题来自于这样一个事实,即我想限制用户在名为name的属性中输入空白字符串的可能性,如下所示:

/**
* @ApiResource(
*     attributes={
*          "normalization_context"={"groups"={"cons:read", "cons:list"}},
*          "denormalization_context"={"groups"={"cons:write"}}
*     },
*     collectionOperations={
*          "get"={
*              "mehtod"="GET",
*              "normalization_context"={"groups"={"cons:list"}},
*          },
*          "post"={
*              "method"="POST"
*              "normalizationContext"={"groups"={"cons:write"}},
*              "validationGroups"={"create"}
*          }
*     }
* )
* @ORMEntity(repositoryClass=ConsultationTypeRepository::class)
*/
class ClassName
{
/**
* @ORMId
* @ORMGeneratedValue
* @ORMColumn(type="integer")
* @Groups({"cons:read", "cons:list", "some:read", "thing:read"})
*/
private $id;
/**
* @ORMColumn(type="string", length=255, nullable=false)
* @Groups({"cons:read", "cons:write", "cons:list", "some:read", "thing:read", "availability:read"})
* @AssertNotBlank (
*     groups={"create"},
*     message="Le nom ne peut pas être vide."
* )
* @AssertLength(
*     max = 255,
*     maxMessage = "Le nom ne peut pas excéder 255 charactères",
*     allowEmptyString = false
* )
* @AssertRegex(
*     pattern="/d/",
*     match=false,
*     message="Le nom ne peut pas contenir de nombre"
* )
*/
private $name;

这是我的测试:

public function testRoleAdminCanNotPostConsultationWithBlankName(): void
{
$body = '{ "name": ""}';
$res = $this->buildPostPutRequest(
Actions::POST,
self::TYPE_CONSULTATION_ROUTE,
$body,
self::ADMIN_CREDENTIALS
);
$this->assertResponseStatusCodeSame(400);
}

现在我收到的是201,而不是预期的400

而其他关于正则表达式或字符串长度的测试则按预期返回400

我不明白为什么NotBlank()在这个测试中似乎没有触发。

知道吗?

我认为这是因为您已经使用camel大小写而不是snake大小写声明了post操作属性。Camel大小写只能在ApiResource注释的顶层使用。

目前,您只声明了操作的method。这在这里没用。

  • normalizationContext=>normalization_context
  • validationGroups=>验证_组

此外,您在GET操作中声明了mehtod属性,而不是method

相关内容

  • 没有找到相关文章

最新更新