2012-07-27 28 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

全局变量中断单元测试,正如您发现的那样。出于这个原因,他们是一个坏主意和普遍接受的解决方案往往是:

我通常会选择依赖注入的方法,因为你会有更容易的时间。但是,如果你使用的是框架,你可能会陷入全局,所以第二种选择是你最好的选择。

相关问题