[英][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.