Error: Call to undefined method get() in PHPUnit Symfony

Error: Call to undefined method get() in PHPUnit Symfony

我正在尝试使用 PHPUnit 9.0.0 和 Symfony 5.1.8 执行我的第一个单元测试。如果 HTTP 响应为 200,则此测试必须通过。

<?php declare(strict_types=1);

namespace Tests\Infrastructure\Api\Controller;

use PHPUnit\Framework\TestCase;

class ControllerTests extends TestCase
{
    /** @test */
     public function route(): void
    {
        $response = $this->get('/');

        $response->assertStatus(200);
    
    }

}

我得到错误:

There was 1 error:

  1. Tests\Infrastructure\Api\Controller\SupplierControllerTests::route Error: Call to undefined method Tests\Infrastructure\Api\Controller\SupplierControllerTests::get()

我以为 Get 方法是默认方法,由 PHPUnit\Framework\TestCase 导入,但看起来不是这样。

我必须将 Get 方法添加到我的 class ControllerTests 中吗?我如何开发它来测试 HTTP 响应?

提前致谢

您需要扩展Symfony提供的WebTestCase,而不是PHPUnit默认提供的TestCase。

这是您尝试编写的类似测试的示例:

namespace App\Tests\Controller;

use Symfony\Bundle\FrameworkBundle\Test\WebTestCase;

class PostControllerTest extends WebTestCase
{
    public function testShowPost()
    {
        $client = static::createClient();

        $client->request('GET', '/post/hello-world');

        $this->assertEquals(200, $client->getResponse()->getStatusCode());
    }
}