Browse Source

finished codeception extension

tags/2.0.0-beta
Carsten Brandt 11 years ago
parent
commit
c70f5a1bed
  1. 7
      apps/basic/tests/unit/_bootstrap.php
  2. 13
      extensions/yii/codeception/BasePage.php
  3. 37
      extensions/yii/codeception/TestCase.php

7
apps/basic/tests/unit/_bootstrap.php

@ -1,3 +1,8 @@
<?php <?php
// add unit testing specific bootstrap code here // add unit testing specific bootstrap code here
yii\codeception\TestCase::$applicationConfig = yii\helpers\ArrayHelper::merge(
require(__DIR__ . '/../../config/web.php'),
require(__DIR__ . '/../../config/codeception/unit.php')
);

13
extensions/yii/codeception/BasePage.php

@ -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
*/ */
public static $URL = ''; public static $URL = '';
/** /**
* @var AbstractGuy * @var \Codeception\AbstractGuy
*/ */
protected $guy; protected $guy;

37
extensions/yii/codeception/TestCase.php

@ -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
* 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
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;
} }
} }

Loading…
Cancel
Save