Commit c70f5a1b by Carsten Brandt

finished codeception extension

parent 5e78fe7f
<?php <?php
// add unit testing specific bootstrap code here // add unit testing specific bootstrap code here
\ No newline at end of file
yii\codeception\TestCase::$applicationConfig = yii\helpers\ArrayHelper::merge(
require(__DIR__ . '/../../config/web.php'),
require(__DIR__ . '/../../config/codeception/unit.php')
);
\ No newline at end of file
...@@ -2,13 +2,18 @@ ...@@ -2,13 +2,18 @@
namespace yii\codeception; namespace yii\codeception;
use Codeception\AbstractGuy;
/** /**
* Represents a web page to test
*
* Pages extend from this class and declare UI map for this page via
* static properties. CSS or XPath allowed.
*
* Here is an example:
* *
* Declare UI map for this page here. CSS or XPath allowed. * ```php
* public static $usernameField = '#username'; * public static $usernameField = '#username';
* public static $formSubmitButton = "#mainForm input[type=submit]"; * public static $formSubmitButton = "#mainForm input[type=submit]";
* ```
* *
* @author Mark Jebri <mark.github@yandex.ru> * @author Mark Jebri <mark.github@yandex.ru>
* @since 2.0 * @since 2.0
...@@ -20,7 +25,7 @@ abstract class BasePage ...@@ -20,7 +25,7 @@ abstract class BasePage
*/ */
public static $URL = ''; public static $URL = '';
/** /**
* @var AbstractGuy * @var \Codeception\AbstractGuy
*/ */
protected $guy; protected $guy;
......
...@@ -3,20 +3,24 @@ ...@@ -3,20 +3,24 @@
namespace yii\codeception; namespace yii\codeception;
use Yii; use Yii;
use yii\helpers\ArrayHelper;
/**
* TestCase is the base class for all codeception unit tests
*
* @author Mark Jebri <mark.github@yandex.ru>
* @since 2.0
*/
class TestCase extends \PHPUnit_Framework_TestCase class TestCase extends \PHPUnit_Framework_TestCase
{ {
/** /**
* Your application base config that will be used for creating application each time before test. * @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 * 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. * '@tests/unit/console_bootstrap.php' that can be similar to existing unit tests bootstrap file.
* @var mixed
*/ */
protected $baseConfig = '@app/config/web.php'; public static $applicationConfig = '@app/config/web.php';
/** /**
* Your application config, will be merged with base config when creating application. Can be an alias too. * @var array|string Your application config, will be merged with base config when creating application. Can be an alias too.
* @var mixed
*/ */
protected $config = []; protected $config = [];
...@@ -24,13 +28,7 @@ class TestCase extends \PHPUnit_Framework_TestCase ...@@ -24,13 +28,7 @@ class TestCase extends \PHPUnit_Framework_TestCase
* Created application class * Created application class
* @var string * @var string
*/ */
protected $appClass = 'yii\web\Application'; protected $applicationClass = 'yii\web\Application';
protected function setUp()
{
parent::setUp();
$this->mockApplication();
}
protected function tearDown() protected function tearDown()
{ {
...@@ -38,16 +36,21 @@ class TestCase extends \PHPUnit_Framework_TestCase ...@@ -38,16 +36,21 @@ class TestCase extends \PHPUnit_Framework_TestCase
parent::tearDown(); parent::tearDown();
} }
/**
* Sets up `Yii::$app`.
*/
protected function mockApplication() protected function mockApplication()
{ {
$baseConfig = is_array($this->baseConfig) ? $this->baseConfig : require(Yii::getAlias($this->baseConfig)); $baseConfig = is_array(static::$applicationConfig) ? static::$applicationConfig : require(Yii::getAlias(static::$applicationConfig));
$config = is_array($this->config)? $this->config : require(Yii::getAlias($this->config)); $config = is_array($this->config)? $this->config : require(Yii::getAlias($this->config));
new $this->appClass(\yii\helpers\ArrayHelper::merge($baseConfig,$config)); new $this->applicationClass(ArrayHelper::merge($baseConfig,$config));
} }
/**
* Destroys an application created via [[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