Commit 3d934003 by Qiang Xue

test refactoring.

parent cf61967d
...@@ -25,6 +25,6 @@ class HelloController extends Controller ...@@ -25,6 +25,6 @@ class HelloController extends Controller
*/ */
public function actionIndex($message = 'hello world') public function actionIndex($message = 'hello world')
{ {
echo $message."\n"; echo $message . "\n";
} }
} }
...@@ -39,16 +39,14 @@ $config = [ ...@@ -39,16 +39,14 @@ $config = [
'params' => $params, 'params' => $params,
]; ];
if (YII_ENV_DEV) if (YII_ENV_DEV) {
{
// configuration adjustments for 'dev' environment // configuration adjustments for 'dev' environment
$config['preload'][] = 'debug'; $config['preload'][] = 'debug';
$config['modules']['debug'] = 'yii\debug\Module'; $config['modules']['debug'] = 'yii\debug\Module';
$config['modules']['gii'] = 'yii\gii\Module'; $config['modules']['gii'] = 'yii\gii\Module';
} }
if (YII_ENV_TEST) if (YII_ENV_TEST) {
{
// configuration adjustments for 'test' environment. // configuration adjustments for 'test' environment.
// configuration for codeception test environments can be found in codeception folder. // configuration for codeception test environments can be found in codeception folder.
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
// add unit testing specific bootstrap code here // 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/web.php'),
require(__DIR__ . '/../../config/codeception/unit.php') require(__DIR__ . '/../../config/codeception/unit.php')
); );
\ No newline at end of file
<?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_DEBUG') or define('YII_DEBUG', true);
defined('YII_ENV') or define('YII_ENV', 'test'); defined('YII_ENV') or define('YII_ENV', 'test');
...@@ -13,5 +13,4 @@ $config = yii\helpers\ArrayHelper::merge( ...@@ -13,5 +13,4 @@ $config = yii\helpers\ArrayHelper::merge(
require(__DIR__ . '/../config/codeception/acceptance.php') require(__DIR__ . '/../config/codeception/acceptance.php')
); );
$application = new yii\web\Application($config); (new yii\web\Application($config))->run();
$application->run();
...@@ -9,5 +9,4 @@ require(__DIR__ . '/../vendor/yiisoft/yii2/yii/Yii.php'); ...@@ -9,5 +9,4 @@ require(__DIR__ . '/../vendor/yiisoft/yii2/yii/Yii.php');
$config = require(__DIR__ . '/../config/web.php'); $config = require(__DIR__ . '/../config/web.php');
$application = new yii\web\Application($config); (new yii\web\Application($config))->run();
$application->run();
...@@ -3,7 +3,6 @@ ...@@ -3,7 +3,6 @@
namespace yii\codeception; namespace yii\codeception;
use Yii; use Yii;
use yii\helpers\ArrayHelper;
/** /**
* TestCase is the base class for all codeception unit tests * TestCase is the base class for all codeception unit tests
...@@ -14,22 +13,18 @@ use yii\helpers\ArrayHelper; ...@@ -14,22 +13,18 @@ use yii\helpers\ArrayHelper;
class TestCase extends \PHPUnit_Framework_TestCase class TestCase extends \PHPUnit_Framework_TestCase
{ {
/** /**
* @var array|string Your application base config that will be used for creating application each time before test. * @var array the application configuration that will be used for creating an application instance for each 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'; 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 * @inheritdoc
* @var string
*/ */
protected $applicationClass = 'yii\web\Application';
protected function tearDown() protected function tearDown()
{ {
$this->destroyApplication(); $this->destroyApplication();
...@@ -37,20 +32,21 @@ class TestCase extends \PHPUnit_Framework_TestCase ...@@ -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)); return new static::$appClass($config === null ? static::$appConfig : $config);
$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]]. * Destroys the application instance created by [[mockApplication]].
*/ */
protected function destroyApplication() 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