gpt4 book ai didi

php - Symfony2 测试 : filter with html:contains return one value

转载 作者:可可西里 更新时间:2023-11-01 13:21:12 25 4
gpt4 key购买 nike

我想在用户提交没有任何数据的表单时使用 PHPUnit 测试我的 Symfony2 应用程序。

我的验证已激活,因此错误消息会在导航器中正确显示。例如在实体中:

class Foo
{

/**
* @var string
*
* @Assert\NotBlank()
* @ORM\Column(name="name", type="string", length=255)
*/
private $name;

/**
* @var string
*
* @Assert\NotBlank()
* @ORM\Column(name="city", type="string", length=255)
*/
private $city;

}

以及这个实体的类型:

class FooType extends AbstractType
{
/**
* @param FormBuilderInterface $builder
* @param array $options
*/
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('name', 'text')
->add('city', 'text');
}

// ...
}

当我提交没有任何数据的表单时,响应包含 2 条消息“此值不应为空”。

所以在我的测试中我想检索这 2 条消息,但是过滤器函数只返回 1 :

public function testShouldNotSaveANewFooWhenDataIsEmpty()
{
$crawler = $this->client->request('GET', '/foo/new');
$form = $crawler->selectButton('Add')->form(array(
'foo[name]' => '',
'foo[city]' => ''
));

$crawler = $this->client->submit($form);
echo $crawler->filter('html:contains("This value should not be blank")')->count(); // Should display 2, not 1
}

你有什么想法吗?

最佳答案

选择器 html:contains("This value should not be blank")你使用的手段得到每个<html>包含 "This value should not be blank" 的标签字符串。即使这个字符串出现两次,也只有一个 <html>每页标记,因此您永远不会计算 2 个过滤的项目。

解决方案是使用更具体的规则:

$crawler->filter('div:contains("This value should not be blank")')

使用包含您的错误消息的标签的名称。默认情况下为 <div>但您可能已经在 Twig 模板中更改了它。

关于php - Symfony2 测试 : filter with html:contains return one value,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21480751/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com