You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
77 lines
2.1 KiB
77 lines
2.1 KiB
<?php |
|
|
|
namespace yii\codeception; |
|
|
|
use Yii; |
|
use yii\base\InvalidConfigException; |
|
use Codeception\TestCase\Test; |
|
|
|
/** |
|
* TestCase is the base class for all codeception unit tests |
|
* |
|
* @author Mark Jebri <mark.github@yandex.ru> |
|
* @since 2.0 |
|
*/ |
|
class TestCase extends Test |
|
{ |
|
/** |
|
* @var array|string the application configuration that will be used for creating an application instance for each test. |
|
* You can use a string to represent the file path or path alias of a configuration file. |
|
* The application configuration array may contain an optional `class` element which specifies the class |
|
* name of the application instance to be created. By default, a [[yii\web\Application]] instance will be created. |
|
*/ |
|
public $appConfig = '@tests/unit/_config.php'; |
|
|
|
/** |
|
* @inheritdoc |
|
*/ |
|
protected function setUp() |
|
{ |
|
parent::setUp(); |
|
$this->mockApplication(); |
|
} |
|
|
|
/** |
|
* @inheritdoc |
|
*/ |
|
protected function tearDown() |
|
{ |
|
$this->destroyApplication(); |
|
parent::tearDown(); |
|
} |
|
|
|
/** |
|
* Mocks up the application instance. |
|
* @param array $config the configuration that should be used to generate the application instance. |
|
* If null, [[appConfig]] will be used. |
|
* @return \yii\web\Application|\yii\console\Application the application instance |
|
* @throws InvalidConfigException if the application configuration is invalid |
|
*/ |
|
protected function mockApplication($config = null) |
|
{ |
|
$config = $config === null ? $this->appConfig : $config; |
|
if (is_string($config)) { |
|
$configFile = Yii::getAlias($config); |
|
if (!is_file($configFile)) { |
|
throw new InvalidConfigException("The application configuration file does not exist: $config"); |
|
} |
|
$config = require($configFile); |
|
} |
|
if (is_array($config)) { |
|
if (!isset($config['class'])) { |
|
$config['class'] = 'yii\web\Application'; |
|
} |
|
return Yii::createObject($config); |
|
} else { |
|
throw new InvalidConfigException('Please provide a configuration array to mock up an application.'); |
|
} |
|
} |
|
|
|
/** |
|
* Destroys the application instance created by [[mockApplication]]. |
|
*/ |
|
protected function destroyApplication() |
|
{ |
|
Yii::$app = null; |
|
} |
|
}
|
|
|