测试状态代码需要500而不是200

时间:2018-06-12 07:35:13

标签: phpunit symfony4

我正在用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。

为什么?

2 个答案:

答案 0 :(得分:0)

在测试时,服务器端代码会出现一些错误,因此错误代码为500.由于我们无法看到您的测试用例和设置,因此我们很难指导您

答案 1 :(得分:0)

添加

<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解决了它。