代码之家  ›  专栏  ›  技术社区  ›  fermoga

测试状态代码预期为500而不是200

  •  0
  • fermoga  · 技术社区  · 7 年前

    我正在用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
        ]);
    }
    

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

    未能断言500个匹配项预期为200个。

    为什么?

    2 回复  |  直到 7 年前
        1
  •  0
  •   Jonathan    7 年前

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

        2
  •  0
  •   fermoga    7 年前

    添加

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

    推荐文章