如何在使用phpunit-selenium进行测试时获取全局变量

时间:2012-07-27 09:17:16

标签: php phpunit selenium-ide

我在functions.php(phpbb)中有自定义函数testfunction_phpbb(),我想测试一下。

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

当我执行以下测试用例时,我发现$ user是空的(我没有得到全局上下文)。问题是当我在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);
}
}
?>

1 个答案:

答案 0 :(得分:0)

正如您所发现的那样,全局变量打破了单元测试。出于这个原因,它们是一个坏主意,普遍接受的解决方案是:

我通常会选择依赖注入方法,因为你会有更容易的时间。如果您正在使用框架,那么您可能会遇到全局变量,因此第二个选项是您最好的选择。