Модульнуе тестирование в yii2: тестирование моделей

Рейтинг: 1Ответов: 2Опубликовано: 18.11.2014

Здравствуйте. Решил писать приложение на yii2 через unit тесты. Возникли следующие вопросы:

class UsersTest extends \Codeception\TestCase\Test
{
   /**
    * @var \UnitTester
    */
    protected $users;

    protected function _before()
    {
        $this->users = new \app\models\Users;
    }

    protected function _after()
    {
    }

    // tests
    public function testGeId()
    {

    }

}

Как видно, пытаюсь подключить модель Users, при этом вылетает ошибка о том, что данный класс не найден. В чем проблема, почему класс не может быть найден?

Не могу понять, для чего нужен yii2-faker и для чего нужно создавать базу yii2_basic_tests. Где о них можно прочесть?

Спасибо.

Ответы

▲ 1Принят

Проблема заключалось в том, что не был создан экземпляр самого приложения при запуске тестов. tests/_bootstrap.php должен содержать след. код:

require('/../vendor/autoload.php');
require('/../vendor/yiisoft/yii2/Yii.php');

$config = require('config/web.php');

(new yii\web\Application($config));

Подробности тут

P.S.: @Etki, отдельное спасибо, подсказал куда копать.

▲ 1
  1. Наверняка надо подключить vendor/autoload.php. С yii2-codeception я не работал, но судя по родительскому классу, он здесь не используется.
  2. Модели, как правило, не нужно тестировать. Тестироваться должен нижележащий слой (active record), сами модели должны просто его использовать.

Обновление

Если у вас метод отсеивает три записи, то его тестировать не нужно. Если у вас что-то серьезное, то это должно быть вынесено на уровень выше.