首页 > 解决方案 > 测试状态码需要 500 而不是 200

问题描述

我正在使用 Symfony 4.1 编写我的第一个测试,我遇到了一个奇怪的问题。测试是确保端点返回状态 200:

public function testFetchTaskEndpointStatusCode200()
{
    $client = static::createClient();
    $client->request("GET", "/tasks");

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

然后端点触发以下方法:

/**
 * @Route("/tasks")
 * @Method("GET")
 */
public function fetchAction()
{
    $repository = $this->getDoctrine()->getRepository(Task::class);
    $tasks = $repository->findAll();

    return $this->json([
        'tasks' => $tasks
    ]);
}

使用 Insomnia 软件,通过浏览器,我可以看到返回的状态是 200,但是在执行测试时:

断言 500 与预期的 200 匹配失败。

为什么?

标签: phpunitsymfony4

解决方案


添加

<phpunit>
    ...
    <!-- define your env variables for the test env here -->
    <env name="DATABASE_URL" value="mysql://username:password@127.0.0.1:3306/database" />
</phpunit>

解决phpunit.xml.dist它。


推荐阅读