Commit 010e17d9 by Qiang Xue

Merge pull request #1612 from Ragazzo/codeception_testcase_imrovements

extended from codeception testcase, added docs
parents 5f659f90 44d28407
...@@ -5,9 +5,8 @@ This extension provides [Codeception](http://codeception.com/) integration for t ...@@ -5,9 +5,8 @@ This extension provides [Codeception](http://codeception.com/) integration for t
It provides classes that help with testing with codeception: It provides classes that help with testing with codeception:
- a base class for unit-tests: `yii\codeception\TestCase - a base class for unit-tests: `yii\codeception\TestCase`;
- a base class for codeception page-objects: `yii\codeception\BasePage`. - a base class for codeception page-objects: `yii\codeception\BasePage`.
- a solution for testing emails
Installation Installation
...@@ -39,7 +38,55 @@ class to reduce code duplication. Simply extend your page object from this class ...@@ -39,7 +38,55 @@ class to reduce code duplication. Simply extend your page object from this class
For unit testing there is a `TestCase` class which holds some common features like application creation before each test For unit testing there is a `TestCase` class which holds some common features like application creation before each test
and application destroy after each test. You can configure a mock application using this class. and application destroy after each test. You can configure a mock application using this class.
`TestCase` is extended from `PHPUnit_Framework_TestCase` so all methods and assertions are available. `TestCase` is extended from `Codeception\TestCase\Case` so all methods and assertions are available.
You may use codeception modules and fire events in your test, just use methods:
```php
<?php
#in your unit-test
$this->getModule('CodeHelper'); #or some other module
```
You also can use all guy methods by accessing guy instance like:
```php
<?php
$this->codeGuy->someMethodFromModule();
```
to fire event do this:
```php
<?php
use Codeception\Event\TestEvent;
public function testSomething()
{
$this->fire('myevent', new TestEvent($this));
}
```
this event can be catched in modules and helpers. If your test is in the group, then event name will be followed by the groupname,
for example ```myevent.somegroup```.
Execution of special tests methods is (for example on ```UserTest``` class):
```
tests\unit\models\UserTest::setUpBeforeClass();
tests\unit\models\UserTest::_before();
tests\unit\models\UserTest::setUp();
tests\unit\models\UserTest::testSomething();
tests\unit\models\UserTest::tearDown();
tests\unit\models\UserTest::_after();
tests\unit\models\UserTest::tearDownAfterClass();
```
If you use special methods dont forget to call its parent.
```php ```php
<?php <?php
......
...@@ -4,6 +4,7 @@ namespace yii\codeception; ...@@ -4,6 +4,7 @@ namespace yii\codeception;
use Yii; use Yii;
use yii\base\InvalidConfigException; use yii\base\InvalidConfigException;
use Codeception\TestCase\Test;
/** /**
* TestCase is the base class for all codeception unit tests * TestCase is the base class for all codeception unit tests
...@@ -11,7 +12,7 @@ use yii\base\InvalidConfigException; ...@@ -11,7 +12,7 @@ use yii\base\InvalidConfigException;
* @author Mark Jebri <mark.github@yandex.ru> * @author Mark Jebri <mark.github@yandex.ru>
* @since 2.0 * @since 2.0
*/ */
class TestCase extends \PHPUnit_Framework_TestCase class TestCase extends Test
{ {
/** /**
* @var array|string the application configuration that will be used for creating an application instance for each test. * @var array|string the application configuration that will be used for creating an application instance for each test.
......
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