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:
- 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());
}
}
我正在尝试使用 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:
- 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());
}
}