Functional testing in Symfony2 gives me error: Failed asserting that false is true

Functional testing in Symfony2 gives me error: Failed asserting that false is true

我有我这样做的地方:

return $this->redirect($this->generateUrl('url_key'));

在我的测试中我这样做:

$this->assertTrue($client->getResponse()->isRedirect());

但我得到错误:

Failed asserting that false is true

我的问题在哪里?为什么我会收到错误消息?

我的完整测试:

public function testDeleteAction()
{
    $client = static::createClient();
    $client->request('GET', '/translation/delete/messages/test.key');
    $client->followRedirects();
    $this->assertTrue($client->getResponse()->isRedirect());
}

仅当您希望在获得重定向响应后执行另一个请求时才应使用 followRedirect。在你的情况下你不需要它(甚至你不能使用它 - 如果你这样做 followRedirects 那么你会得到另一个不再是 "redirect response" 的响应 - 所以断言将失败)。

可能是第一个请求出了问题。检查响应的状态和可选内容:

public function testDeleteAction()
{
    $client = static::createClient();
    $client->request('GET', '/translation/delete/messages/test.key');
    // of course you should use the "pro-way" and check it with debbuger instead of var_dumps ;)
    var_dump($client->getResponse()->getStatus());
    var_dump($client->getResponse()->getContent());
    $this->assertTrue($client->getResponse()->isRedirect());
}

检查是否没有 404 或 500 状态 - 如果是,然后找出原因(或使用其他信息扩展您的问题)。