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
// 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;
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 $formSubmitButton = "#mainForm input[type=submit]";
* ```
*
* @author Mark Jebri <mark.github@yandex.ru>
* @since 2.0
@ -20,7 +25,7 @@ abstract class BasePage
*/
public static $URL = '';
/**
* @var AbstractGuy
* @var \Codeception\AbstractGuy
*/
protected $guy;

37
extensions/yii/codeception/TestCase.php

@ -3,20 +3,24 @@
namespace yii\codeception;
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
{
/**
* 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
* '@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 mixed
* @var array|string Your application config, will be merged with base config when creating application. Can be an alias too.
*/
protected $config = [];
@ -24,13 +28,7 @@ class TestCase extends \PHPUnit_Framework_TestCase
* Created application class
* @var string
*/
protected $appClass = 'yii\web\Application';
protected function setUp()
{
parent::setUp();
$this->mockApplication();
}
protected $applicationClass = 'yii\web\Application';
protected function tearDown()
{
@ -38,16 +36,21 @@ class TestCase extends \PHPUnit_Framework_TestCase
parent::tearDown();
}
/**
* Sets up `Yii::$app`.
*/
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));
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()
{
\Yii::$app = null;
}
}

Loading…
Cancel
Save