Commit 3d934003 by Qiang Xue

test refactoring.

parent cf61967d
......@@ -25,6 +25,6 @@ class HelloController extends Controller
*/
public function actionIndex($message = 'hello world')
{
echo $message."\n";
echo $message . "\n";
}
}
......@@ -39,16 +39,14 @@ $config = [
'params' => $params,
];
if (YII_ENV_DEV)
{
if (YII_ENV_DEV) {
// configuration adjustments for 'dev' environment
$config['preload'][] = 'debug';
$config['modules']['debug'] = 'yii\debug\Module';
$config['modules']['gii'] = 'yii\gii\Module';
}
if (YII_ENV_TEST)
{
if (YII_ENV_TEST) {
// configuration adjustments for 'test' environment.
// configuration for codeception test environments can be found in codeception folder.
......
......@@ -2,7 +2,7 @@
// add unit testing specific bootstrap code here
yii\codeception\TestCase::$applicationConfig = yii\helpers\ArrayHelper::merge(
yii\codeception\TestCase::$appConfig = yii\helpers\ArrayHelper::merge(
require(__DIR__ . '/../../config/web.php'),
require(__DIR__ . '/../../config/codeception/unit.php')
);
<?php
// NOTE: Make sure this file is not accessable when deployed to production
// NOTE: Make sure this file is not accessible when deployed to production
defined('YII_DEBUG') or define('YII_DEBUG', true);
defined('YII_ENV') or define('YII_ENV', 'test');
......@@ -13,5 +13,4 @@ $config = yii\helpers\ArrayHelper::merge(
require(__DIR__ . '/../config/codeception/acceptance.php')
);
$application = new yii\web\Application($config);
$application->run();
(new yii\web\Application($config))->run();
......@@ -9,5 +9,4 @@ require(__DIR__ . '/../vendor/yiisoft/yii2/yii/Yii.php');
$config = require(__DIR__ . '/../config/web.php');
$application = new yii\web\Application($config);
$application->run();
(new yii\web\Application($config))->run();
......@@ -3,7 +3,6 @@
namespace yii\codeception;
use Yii;
use yii\helpers\ArrayHelper;
/**
* TestCase is the base class for all codeception unit tests
......@@ -14,22 +13,18 @@ use yii\helpers\ArrayHelper;
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.
* @var array the application configuration that will be used for creating an application instance for each test.
*/
public static $applicationConfig = '@app/config/web.php';
public static $appConfig = [];
/**
* @var array|string Your application config, will be merged with base config when creating application. Can be an alias too.
* @var string the application class that [[mockApplication()]] should use
*/
protected $config = [];
public static $appClass = 'yii\web\Application';
/**
* Created application class
* @var string
* @inheritdoc
*/
protected $applicationClass = 'yii\web\Application';
protected function tearDown()
{
$this->destroyApplication();
......@@ -37,20 +32,21 @@ class TestCase extends \PHPUnit_Framework_TestCase
}
/**
* Sets up `Yii::$app`.
* 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
*/
protected function mockApplication()
protected function mockApplication($config = null)
{
$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));
return new static::$appClass($config === null ? static::$appConfig : $config);
}
/**
* Destroys an application created via [[mockApplication]].
* Destroys the application instance created by [[mockApplication]].
*/
protected function destroyApplication()
{
\Yii::$app = null;
Yii::$app = null;
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment