我試圖使用上symfony.com描述了以下技術:http://symfony.com/doc/current/cookbook/testing/http_authentication.html 以試圖在功能測試,要求用戶控制器,用於在被記錄Symfony2中:無法模擬的功能測試HTTP認證
。到目前爲止,我的登錄表單正在工作,我可以登錄,並且Symfony2調試Web工具欄將我的用戶顯示爲已驗證身份。另外,我已經爲登錄過程本身編寫了功能測試,這已經過去了。所以我現在通過兩種方案,即我的登錄正在工作。
我遇到的唯一問題,就是試圖模擬像這樣對其他控制器HTTP認證時:
$client = static::createClient(array(), array(
'PHP_AUTH_USER' => 'tester',
'PHP_AUTH_PW' => 'testpass',
));
我可以通過檢查$客戶端看到的,我被重定向到我的登錄頁面,那一刻我嘗試這樣:
$crawler = $client->request('GET', '/');
我知道,與密碼testpass用戶測試存在於數據庫,因爲我可以通過瀏覽器使用該帳戶登錄也是如此。
我可以從安全控制器測試使用下面的代碼:
$client = $this->createClient(array(), array('HTTP_HOST' => 'myapp.test'));
// Visit user login page and login
$crawler = $client->request('GET', '/login');
$form = $crawler->selectButton('Login')->form();
$crawler = $client->submit($form, array('_username' => 'tester', '_password' => 'testpass'));
// ... carry on with remainder of tests
,但我也不太清楚,如果這是這樣做的最有效方法。
我對有什麼不對,有些愕然。有任何想法嗎? Symfony2中是否有更改,意味着此過程已更改並且HTTP驗證模擬現在不起作用或工作方式不同?
public function setUp()
{
// Perform user login.
$this->client = $this->createClient(array(), array('HTTP_HOST' => 'scire.test'));
$crawler = $this->client->request('GET', '/login');
$form = $crawler->selectButton('Login')->form();
$this->client->submit($form, array('_username' => 'tester', '_password' => 'tester'));
}
的HTTP認證不會在這裏工作,除非我改變我的config_test.yml一些安全設置,以允許HTTP:
我遇到了同樣的問題。我設法使用你的方法登錄,但每次我嘗試訪問另一個頁面時,我必須再次通過登錄,最終導致我陷入循環。 – greg 2012-07-18 18:07:55