2011-07-17 32 views
6

我找不到任何關於此的文檔。如何在Symfony 2中進行需要驗證的功能測試?

我正在使用客戶端對象向/ login發送請求,填寫表單並提交它。這工作正常,但我得到一個302迴應/登錄,就好像憑據不正確。

在任何情況下,我認爲第一次請求後會話表中至少應該有一行,但沒有任何行。這怎麼可能?

有什麼想法?

編輯:下面的代碼:

// Go to login page 
    $client = $this->createClient(); 
    $crawler = $client->request('GET', '/login'); 
    $this->assertTrue($crawler->filter('html:contains("Username")')->count() > 0); 

    // Fill in the form and submit it 
    $form = $crawler->selectButton('login')->form(); 
    $form['_username'] = 'admin'; 
    $form['_password'] = 'admin'; 
    $client->submit($form); 
    $this->assertEquals(302,$client->getResponse()->getStatusCode()); 
    $this->assertFalse($client->getResponse()->isRedirect('http://localhost/login')); 

最後斷言失敗

+0

可以顯示運行此測試的代碼部分嗎? – Ibu

+0

@Ibu sure,你有 – HappyDeveloper

+0

你最終是否成功通過了這個測試?我知道這是一個假設你會記住的遠景,但也許......? – mmmm

回答

2

你應該使用HTTP基本身份驗證創建一個新的firewal:

 
security: 
    ... 
    firewalls: 
     functional_test: 
      pattern: /secure/.* 
      stateless: true 
      http_basic: 
       provider: provider_name 
    ... 

然後創建一個客戶是這樣的:

$client = $this->createClient(array(), array(
    'PHP_AUTH_USER' => 'username', 
    'PHP_AUTH_PW' => 'password', 
)); 

快樂編碼!