Как писать unit тесты ? [Решено]

Всё про тестирование в Yii 2.0
Ответить
nepster
Сообщения: 838
Зарегистрирован: 2013.01.02, 03:35

Как писать unit тесты ? [Решено]

Сообщение nepster » 2014.03.02, 16:08

Уже второй день пытаюсь разобраться как писать тесты в Yii и ничего не выходит.

По данному мануалу
http://php-md5.blogspot.com/2013/05/php ... ework.html

я установил все это дело с phpunit

Перехожу в папку:
\yii2\apps\advanced\frontend\tests\unit

Создаю свой первый тестMyOneTest.php:

Код: Выделить всё

use \yii\codeception\TestCase;

class MyOneTest extends TestCase
{
    public function testFailure()
    {
        $this->assertTrue(true);
    }
} 
пример тоже где-то подцепил из мануалов, запускаю: phpunit MyOneTest.php

Код: Выделить всё

F:\OpenServer\domains\portf.ru\yii2\apps\advanced\frontend\tests\unit>phpunit My
OneTest.php
PHP Fatal error:  Class 'yii\codeception\TestCase' not found in F:\OpenServer\do
mains\portf.ru\yii2\apps\advanced\frontend\tests\unit\MyOneTest.php on line 6

Fatal error: Class 'yii\codeception\TestCase' not found in F:\OpenServer\domains
\portf.ru\yii2\apps\advanced\frontend\tests\unit\MyOneTest.php on line 6

Написал как-то так:

Код: Выделить всё

class MyOneTest extends PHPUnit_Framework_TestCase
{
    public function testFailure()
    {
        $this->assertTrue(true);
    }
} 
Вроде все работает.

Код: Выделить всё

PHPUnit 3.7.32 by Sebastian Bergmann.

.

Time: 72 ms, Memory: 1.75Mb

OK (1 test, 1 assertion)
 


Но в таком случае я так понял у меня не будет доступа в методах теста к компонентам Yii. Подскажите пожалуйста что делать?
Последний раз редактировалось nepster 2014.03.04, 19:00, всего редактировалось 1 раз.

Аватара пользователя
flashimage
Сообщения: 1517
Зарегистрирован: 2011.01.23, 12:43

Re: Как писать unit тесты ?

Сообщение flashimage » 2014.03.02, 17:36

Бранчи это гомеоморфические эндофункторы, которые мапятся на субманифолды пространства Гилберта.

nepster
Сообщения: 838
Зарегистрирован: 2013.01.02, 03:35

Re: Как писать unit тесты ?

Сообщение nepster » 2014.03.02, 21:47

С горем пополам разобрал я этот док с помощью гугл переводчика, но мало, что понял.

Я прочитал отдельно про codecept, что то там примерно понял.

Захожу в свою папку frontend, подкачал туда codecept.phar

Запускаю это дело:

php codecept.phar run

Код: Выделить всё

 [Codeception\Exception\Configuration]
 WebGuy class doesn't exists in suite folder.
 Run the 'build' command to generate it

php codecept.phar build

Код: Выделить всё

  [Codeception\Exception\Configuration]
  common\tests\_helpers\FixtureHelper could not be found and loaded
\common\tests\_helpers\FixtureHelper.php - тот файл присутствует.


Что делать?

Аватара пользователя
flashimage
Сообщения: 1517
Зарегистрирован: 2011.01.23, 12:43

Re: Как писать unit тесты ?

Сообщение flashimage » 2014.03.02, 22:11

Вы бы сначала научились пользоваться composer, в yii2 без него никуда. Он кроме того, что скачивает основное, скачивает еще и зависимости и генерит автолоадер.
Бранчи это гомеоморфические эндофункторы, которые мапятся на субманифолды пространства Гилберта.

nepster
Сообщения: 838
Зарегистрирован: 2013.01.02, 03:35

Re: Как писать unit тесты ?

Сообщение nepster » 2014.03.02, 22:21

я выполнял команду

Код: Выделить всё

composer update
в корне приложения. В папке vendor всегда генерируется новый файл /vendor/autoload.php, он же подключается вот тут \frontend\tests\_bootstrap.php

Я про это тоже читал, вроде все как следует сделано, но возникают ошибки.

Аватара пользователя
flashimage
Сообщения: 1517
Зарегистрирован: 2011.01.23, 12:43

Re: Как писать unit тесты ?

Сообщение flashimage » 2014.03.03, 00:21

а это делали?

Код: Выделить всё

php codecept.phar build
Бранчи это гомеоморфические эндофункторы, которые мапятся на субманифолды пространства Гилберта.

nepster
Сообщения: 838
Зарегистрирован: 2013.01.02, 03:35

Re: Как писать unit тесты ?

Сообщение nepster » 2014.03.03, 00:26

php codecept.phar build

Код: Выделить всё

      [Codeception\Exception\Configuration]
      common\tests\_helpers\FixtureHelper could not be found and loaded


\common\tests\_helpers\FixtureHelper.php - тот файл присутствует.

nepster
Сообщения: 838
Зарегистрирован: 2013.01.02, 03:35

Re: Как писать unit тесты ? [Решено]

Сообщение nepster » 2014.03.04, 19:02

посидел 2 часа с гугл переводчиком и разобрался. Нужна была дополнительная команда для компосеру

astronin
Сообщения: 606
Зарегистрирован: 2012.01.30, 17:46

Re: Как писать unit тесты ? [Решено]

Сообщение astronin » 2014.12.09, 17:03

nepster писал(а):посидел 2 часа с гугл переводчиком и разобрался. Нужна была дополнительная команда для компосеру
какая, если не секрет?

miha
Сообщения: 15
Зарегистрирован: 2014.05.09, 04:11

Re: Как писать unit тесты ? [Решено]

Сообщение miha » 2015.01.03, 20:11

astronin писал(а):какая, если не секрет?

Код: Выделить всё

php composer.phar require --dev "codeception/codeception: 1.8.*@dev" "codeception/specify: *" "codeception/verify: *"
из tests\README.md

123Lookatme
Сообщения: 2
Зарегистрирован: 2015.04.03, 17:22

Re: Как писать unit тесты ? [Решено]

Сообщение 123Lookatme » 2015.04.03, 17:56

Всем привет! Недавно начал разбираться с Codeception в yii2
С acceptance и functional все ясно,Но возник вопрос по Unit тестам:
Предположим у меня есть компонент

Код: Выделить всё

 MyComponent extends \yii\base\Component
у него есть метод

Код: Выделить всё

public function getName(){return 'new_name'}
в тестах я могу изменить этот компонент в методе setUp

Код: Выделить всё

Yii::configure(Yii::$app, [
            'components' => [
                'myComponent' => [
                    'class' => ????
                ],
            ],
        ]); 
также я могу создать Mock класс и переопределить метод getName

Код: Выделить всё

$stub=$this->getMockBuilder('common\components\MyComponent')->setMethods(['getName']) ->getMock()
$stub->method('getName')->willReturn('Another_name'); 
Но как мне заставить приложение во время тестов при любом вызове \Yii::$app->myComponent->getName()
возвращать 'Another_name' ?

lynicidn
Сообщения: 2221
Зарегистрирован: 2014.05.24, 15:12

Re: Как писать unit тесты ? [Решено]

Сообщение lynicidn » 2015.04.03, 18:21

у вас в вопросе есть ответ:
создать Mock и переопределить метод getName

юниты не должны как по мне зависеть от Yii::$app

123Lookatme
Сообщения: 2
Зарегистрирован: 2015.04.03, 17:22

Re: Как писать unit тесты ? [Решено]

Сообщение 123Lookatme » 2015.04.09, 15:08

Подскажите пожалуйста еще один момент.
Мне необходимо протестировать поведение контроллера. В экшне создается модель, вызывается ее метод, который в свою очередь создает и вызывает метод другой модели итд. Возможно ли отследить всю цепочку вызовов в разных условиях, с разными параметрами переданными в экшн, с помощью юнит тестов ?

Аватара пользователя
des1roer
Сообщения: 390
Зарегистрирован: 2015.02.06, 17:03
Контактная информация:

Re: Как писать unit тесты ? [Решено]

Сообщение des1roer » 2016.03.23, 13:30

я вот так устанавливал

Ответить