PHPUnit和Symfony

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PHPUnit和Symfony相关的知识,希望对你有一定的参考价值。

我正在尝试测试我的indexAction方法,只是为了测试我的页面中是否有一些精确的单词。

所以我有这个

public function testIndexAction()
{
    $client = static::createClient();
    $crawler = $client->request('GET', 'conducteurs');
    $this->assertSame(1, $crawler->filter('html:contains("Liste des conducteurs")')->count());
}

在我的页面中,有“Liste des conducteurs”,但我的测试失败了。你知道为什么吗 ?是否有针对phpunit.xml的精确设置?

答案

字符串可能不止一次出现。您可以将断言更改为

$this->assertGreaterThan(0,$crawler->filter('html:contains("Liste des conducteurs")')->count());
另一答案

我无法猜测你的应用程序发生了什么,因为我还没有看到它。但是,我能做的是建议你如何调试它并改进你的测试以便给你更好的反馈。

在开始查看响应内容之前,您可以确保响应成功。您还可以将响应内容用作断言消息,因此如果断言失败,phpunit将显示内容。

public function testIndexAction()
{
    $client = static::createClient();
    $crawler = $client->request('GET', 'conducteurs');

    $this->assertSame(200, $client->getResponse()->getStatusCode(), $client->getResponse()->getContent());
    $this->assertSame(1, $crawler->filter('html:contains("Liste des conducteurs")')->count(), $client->getResponse()->getContent());
}

如果状态代码不是200,但也不是错误,则可能是您的网站进行了重定向(301/302),在这种情况下,您可以自动执行follow all redirects

$client->followRedirects();

或遵循特定的重定向:

$crawler = $client->followRedirect();

以上是关于PHPUnit和Symfony的主要内容,如果未能解决你的问题,请参考以下文章

PHPUnit、接口和命名空间 (Symfony2)

PHPUnit和Symfony

Symfony 5 Phpunit 未定义方法

Symfony:如何正确地从phpunit / phpunit切换到phpunit桥

Symfony 3模拟服务功能测试phpunit和liip

Symfony PHPUnit 测试不验证用户