2017-04-12 7 views
0

私はテストを容易にするためにライブラリを開発しています。PHPUnitブートストラップでファイル/シングルトンをロード

複数のテストクラスとテストで使用されるブートストラップでファイルを一度ロードする必要があります。ファイルは状態を変更しません。

シングルトンをブートストラップに入れてテストにアクセスする方法の1つです。別の方法では、スイートごとにファイルを一度にsetUpBeforeClassで読み込んでいますが、テストスイート全体で一度だけでなく、テストクラスごとに一度にファイルを読み込むので、そのようにしたくありません。

これは私の作業マシンでは機能しますが、シングルトンは自宅でインストールすると常にNULLになります。私は両方でPHP 7.1を使用しています。両方で最新のPHPUnitでした。

私のブートストラップファイルの変数は、自宅のマシンで同じ方法でアクセスできないようです。 preserveGlobalsを使用しても、$GLOBALSは完全に消去されます。

私はシングルトンを維持したいのですが、それは一部の人々をオフにするかもしれませんが、それはうまく動作し、純粋にテストの方法でしか存在しないからです。しかし、私の問題の代わりに定番のものがあれば、私はそれを望んでいます。

答えて

0

phpstormにデフォルトのブートストラップファイル(testbootstrap.php)を設定してから、別のブートストラップファイル(testbootstrap2.php)を書き、phpunit.xmlでそのファイルを指し示しました。その場合、phpunit.xml のブートストラップは無視されます

オリジナルのブートストラップでは、オートローダが含まれていたシングルトンオブジェクトが作成されませんでした。

私はそれをオフにしました。私の人生の2つの夜が過ぎ去った。別のファイルを指定してもそれを上書きしないので、私の意見ではこれが本当に「デフォルト」として機能しないので、この機能を使用しないことをお勧めします。私はそれがデフォルトの設定ファイルのために同じものでないかどうかは分かりません。

私はまだジェットブレーンのものが大好きです。

oops

1

あなたのライブラリと、プロジェクトの独自のクラスは、自動的に(かつ無条件に)設定することができます自動ロードに使用されるものであるComposerは、composer.json autoload section内のファイルが含まれています。

{ 
    "autoload": { 
     "files": ["src/MyLibrary/functions.php"] 
    } 
} 

ここでは、指定されたパスのfunctions.phpファイルが自動的にプルインされます。 "autoload-dev": { "files": [...] }セクションでも同じ設定を使用できます。

+0

これは良い呼び出しです、ありがとう –

関連する問題