1

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);
}
}
?>
4

1 に答える 1

0

あなたが発見したように、グローバル変数は単体テストを壊します。このため、それらは悪い考えであり、一般的に受け入れられている解決策は次のいずれかです。

私は通常、依存性注入のアプローチを採用します。ただし、フレームワークを使用している場合は、グローバルに行き詰まる可能性があるため、2 番目のオプションが最善の策です。

于 2012-07-27T09:48:26.360 に答える