Commit 0788e104 by Qiang Xue

Refactored unit tests.

parent db11cfc5
<?php
// add unit testing specific bootstrap code here
yii\codeception\TestCase::$appConfig = require(__DIR__ . '/_config.php');
......@@ -17,12 +17,10 @@ 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 static $appConfig = [];
/**
* @var string the application class that [[mockApplication()]] should use
*/
public static $appClass = 'yii\web\Application';
public $appConfig = '@tests/unit/_config.php';
/**
* @inheritdoc
......@@ -47,17 +45,26 @@ class TestCase extends Test
* @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 ? static::$appConfig : $config;
$config = $config === null ? $this->appConfig : $config;
if (is_string($config)) {
$config = Yii::getAlias($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)) {
throw new InvalidConfigException('Please provide a configuration for creating application.');
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.');
}
return new static::$appClass($config);
}
/**
......
......@@ -10,7 +10,6 @@ namespace yii\test;
use Yii;
use yii\base\Component;
use yii\base\InvalidConfigException;
use yii\db\ActiveRecord;
use yii\db\ActiveRecordInterface;
use yii\db\Connection;
......@@ -185,7 +184,7 @@ class DbFixtureManager extends Component
* Returns the specified ActiveRecord instance in the fixture data.
* @param string $fixtureName the fixture name
* @param string $modelName the alias for the fixture data row
* @return \yii\db\ActiveRecord the ActiveRecord instance. Null is returned if there is no such fixture row.
* @return ActiveRecordInterface the ActiveRecord instance. Null is returned if there is no such fixture row.
*/
public function getModel($fixtureName, $modelName)
{
......@@ -196,9 +195,9 @@ class DbFixtureManager extends Component
return $this->_models[$fixtureName][$modelName];
}
$row = $this->_rows[$fixtureName][$modelName];
/** @var \yii\db\ActiveRecord $modelClass */
/** @var ActiveRecordInterface $modelClass */
$modelClass = $this->_models[$fixtureName];
/** @var \yii\db\ActiveRecord $model */
/** @var ActiveRecordInterface $model */
$model = new $modelClass;
$keys = [];
foreach ($model->primaryKey() as $key) {
......
......@@ -19,15 +19,18 @@ use Yii;
*
* ~~~
* use yii\test\DbTestTrait;
* use yii\codeception\TestCase;
* use app\models\Post;
* use app\models\User;
*
* class PostTestCase extends \PHPUnit_Framework_TestCase
* class PostTestCase extends TestCase
* {
* use DbTestTrait;
*
* public function setUp()
* protected function setUp()
* {
* parent::setUp();
*
* $this->loadFixtures([
* 'posts' => Post::className(),
* 'users' => User::className(),
......
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