1

phpunitのTestCaseに外部データを挿入する方法の説明が見つかりません。私の目標は、xml構成ファイルにワークスペースディレクトリを設定し、すべてのクラスからそのパスを読み取ることです。今、私はこれをグローバル変数でのみ解決することができますが、これは嫌です:

ブートストラップの場合:

global $workspace;
$workspace = __DIR__ . '/../test/WorkSpace/';

テストでは:

class MyTest extends PHPUnit_Framework_TestCase
{
    protected $workSpace;

    public function __construct()
    {
        global $workspace;
        $this->workSpace = $workspace;
        parent::__construct();
    }

    //...
}

そのための構成xml:

<?xml version="1.0" encoding="UTF-8"?>
<phpunit xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:noNamespaceSchemaLocation="http://phpunit.de/phpunit.xsd"
         backupGlobals="false"
         verbose="true"
         bootstrap="Application/bootstrap.php">
    <testsuites>
        <testsuite name="PHPUnit">
            <directory>test</directory>
        </testsuite>
    </testsuites>
</phpunit>
4

1 に答える 1

3

グローバルの使用は避けてください。この目的のために、ブートストラップファイルで定数を定義できます。

ドキュメントを確認したところ、XMLファイルでPHP値を定義できることがわかりました。

PHP INI設定、定数、グローバル変数の設定

要素とその子を使用して、PHP設定、定数、およびグローバル変数を構成できます。include_pathを先頭に追加するためにも使用できます。

<php>
      <includePath>.</includePath>
      <ini name="foo" value="bar"/>
      <const name="foo" value="bar"/>
      <var name="foo" value="bar"/>
      <env name="foo" value="bar"/>
      <post name="foo" value="bar"/>
      <get name="foo" value="bar"/>
      <cookie name="foo" value="bar"/>
      <server name="foo" value="bar"/>
      <files name="foo" value="bar"/>
      <request name="foo" value="bar"/>
    </php>

上記のXML構成は、次のPHPコードに対応しています。

ini_set('foo', 'bar');
define('foo', 'bar');
$GLOBALS['foo'] = 'bar';
$_ENV['foo'] = 'bar';
$_POST['foo'] = 'bar';
$_GET['foo'] = 'bar';
$_COOKIE['foo'] = 'bar';
$_SERVER['foo'] = 'bar';
$_FILES['foo'] = 'bar';
$_REQUEST['foo'] = 'bar';

上で述べたように、グローバル変数の代わりに、defineを使用して定数を使用することをお勧めします。

于 2013-03-25T09:13:51.643 に答える