* @since 2.0 */ class TestCase extends \PHPUnit_Framework_TestCase { /** * @var array|string Your application base config that will be used for creating application each time before test. * This can be an array or alias, pointing to the config file. For example for console application it can be * '@tests/unit/console_bootstrap.php' that can be similar to existing unit tests bootstrap file. */ public static $applicationConfig = '@app/config/web.php'; /** * @var array|string Your application config, will be merged with base config when creating application. Can be an alias too. */ protected $config = []; /** * Created application class * @var string */ protected $applicationClass = 'yii\web\Application'; protected function tearDown() { $this->destroyApplication(); parent::tearDown(); } /** * Sets up `Yii::$app`. */ protected function mockApplication() { $baseConfig = is_array(static::$applicationConfig) ? static::$applicationConfig : require(Yii::getAlias(static::$applicationConfig)); $config = is_array($this->config)? $this->config : require(Yii::getAlias($this->config)); new $this->applicationClass(ArrayHelper::merge($baseConfig,$config)); } /** * Destroys an application created via [[mockApplication]]. */ protected function destroyApplication() { \Yii::$app = null; } }