gpt4 book ai didi

php - Symfony2 功能测试打印出重定向 html 并停止测试执行

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:37:52 24 4
gpt4 key购买 nike

我正在努力理解我的功能测试或项目设置有什么问题:phpunit 执行仅打印出以下信息(我没有在测试套件中打印出来 - 即它不是来自client->getResponse() 打印或任何东西)。此外,在将此文本打印到命令行后,整个测试执行立即停止,没有任何结果信息:

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta http-equiv="refresh" content="1;url=/" />

<title>Redirecting to /</title>
</head>
<body>
Redirecting to <a href="/">/</a>.
</body>
</html>

从命令行运行 phpunit 后:

phpunit -c app --group temp1 src/AppBundle/Tests/Controller/SecurityControllerTest.php

我的测试代码很简单:

class SecurityControllerTest extends WebTestCase
{
/**
* test login with succesfull case
*
* @group login
* @group temp1
*/
public function testLogin_success()
{
$client = static::createClient();
$crawler = $client->request('GET', '/');

// temp - just to test that the initial crawler location is correct
$this->assertGreaterThan(0, $crawler->filter('html:contains("System Login")')->count(), "login page not found");

$client->followRedirects(true);

$crawler = $this->loginSubmit($client, $crawler, "basic_user1@email.com", "basic_user1_password");
// THE BELOW ROWS ARE NEVER REACHED

// test that the user can access the user home
$crawler = $client->request('GET', '/user/myprofile');
$this->assertGreaterThan(0, $crawler->filter('html:contains("Welcome to your user profile")')->count(), "User homepage not accessible after login");
}

private function loginSubmit($client, $crawler, $username, $password)
{
$loginButton = $crawler->selectButton('Login');
$loginForm = $loginButton->form();
$loginForm['form[email]'] = $username;
$loginForm['form[password]'] = $password;

// BELOW IS THE ROW THAT RESULTS IN THE PRINTOUT + TEST EXECUTION STOP
return $client->submit($loginForm);
}

//....
}

此外,完全相同的测试用例在我正在从事的另一个项目中运行良好,因此我一直试图找出项目配置等方面的差异,但没有成功。

非常感谢任何帮助 - 如果可能有帮助/相关,请随时询问其他代码/配置文件内容。

使用 symfony 2.3.12 和 phpunit 4.1.0

已更新:导致错误的特定代码链

因此,在几天前通过解决底层项目 session 问题设法解决这个问题之后,我又回来进一步调试这个问题。目前看来,结果是由于以下代码链,首先调用forward:

$this->forward('bundle:controller:action')->send();

并在转发的 Controller 操作中调用重定向:

$this->redirect($this->generateUrl($route, $parameters))->send();

显然这个 Controller 流程总体上看起来有点奇怪,但问题仍然是为什么这会导致观察到的结果?

最佳答案

我在功能测试 ( official doc ) 中登录时遇到了这个问题,当时我第二次执行 $client->request(...)。在自己的测试类中分离那些单独的测试并没有解决问题。

我通过设置 cookie 解决了这个问题。幸运的是,我的测试不依赖于 cookie,因此所有测试都通过了。

也许这些信息可以帮助您更好地隔离您的问题。

关于php - Symfony2 功能测试打印出重定向 html 并停止测试执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36863856/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com