簡體   English   中英

[Symfony2] [PhpUnit]如何獲取/設置功能對象測試的用戶對象

[英][Symfony2][PhpUnit] How get/set user object for functionnals tests

我今天在這里是因為我正在為symfony2應用程序進行功能測試,但我有一個小問題:我可以登錄TestUser進行測試(在客戶端創建過程中傳遞服務器參數),但是當我只想訪問時到我的用戶對象(根據我在控制器中的測試),他為空。

這是合乎邏輯的,因為我沒有創建登錄頁面傳遞的對象,但沒有找到該問題的原因,您能幫我嗎?

(我知道我可以做一個“初始化函數”來調用登錄頁面,提交登錄表單等...但是我發現它很臟,因為我必須在每次測試前都給她打電話,所以...不)

謝謝 ;)

我在這里找到答案

像這樣的功能:

private function logIn()
{
    $session = $this->client->getContainer()->get('session');

    $firewall = 'FIREWALL_NAME'; //set in security_test.yml
    $token = new UsernamePasswordToken('PASSWORD', null, $firewall, array('ROLE_ADMIN'));
    $session->set('_security_'.$firewall, serialize($token));
    $session->save();

    $cookie = new Cookie($session->getName(), $session->getId());
    $this->client->getCookieJar()->set($cookie);
}

將完成工作(創建會話的Cookie)

使用函數witch在客戶端Request中設置服務器變量:

$client->request(
'METHOD',
'URI',
PARAMETERS,
array(),
array('PHP_AUTH_USER' => 'username', 'PHP_AUTH_PW' => 'pa$$word')

);

玩得開心 :)

如果要使用真實的用戶對象,則應使用DoctrineTestFixtures之類的TestFixtures。

夾具在單獨的測試數據庫中提供測試數據,我認為它們應在每個功能測試中使用

http://symfony.com/doc/current/bundles/DoctrineFixturesBundle/index.html

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM