2012-07-27 59 views
1

我有我的自定義函數testfunction_phpbb()在functions.php(phpbb)內,我想測試它。 如何使用phpunit-selenium進行測試時獲取全局變量

function testfunction_phpbb() 
{ 
global $user 
... 
... 
... 
//if valid user 
return 1; 
//else 
return 0 
} 

當我執行下面的測試情況下,我發現總是$用戶是空的(我不明白全球範圍內)。問題是當我測試一個phpbb,drupal,joomla等內部的函數。當通過phpunit + selenium進行測試時,我如何獲取上下文?

<?php 
require_once './includes/functions.php'; 
class globaltest extends PHPUnit_Extensions_SeleniumTestCase 
{ 
protected function setUp() 
{ 
$this->setBrowser("*chrome"); 
$this->setBrowserUrl("http://localhost/"); 
} 
public function testMyTestCase() 
{ 
$this->open("/"); 
$this->click("link=phpBB3"); 
$this->waitForPageToLoad("30000"); 
$this->click("link=Login"); 
$this->waitForPageToLoad("30000"); 
$this->type("id=username", "admin"); 
$this->type("id=password", "admin123"); 
$this->click("name=login"); 
$this->waitForPageToLoad("30000"); 
$returnvalue = testfunction_phpbb(); 
PHPUnit_Framework_Assert::assertEquals('1',$returnvalue); 
} 
} 
?> 

回答

0

全局變量中斷單元測試,正如您發現的那樣。出於這個原因,他們是一個壞主意和普遍接受的解決方案往往是:

我通常會選擇依賴注入的方法,因爲你會有更容易的時間。但是,如果你使用的是框架,你可能會陷入全局,所以第二種選擇是你最好的選擇。

相關問題