Создание тестов для модулей yii2 - PullRequest
0 голосов
/ 21 января 2019

Привет, я новичок в тестировании yii2, у меня есть настройка среды тестирования и тесты в app / tests, и она работает нормально. Теперь я хочу настроить тесты для одного из моих модулей, который является modules / v1 и содержит команды, компоненты, контроллеры и папки моделей. Я создал начальную настройку для тестов в modules / v1 с использованием codecept bootstrap и настроил ее следующим образом

codeception.yml

namespace: v1
paths:
    tests: tests
    output: tests/_output
    data: tests/_data
    support: tests/_support
    envs: tests/_envs
actor_suffix: Tester
settings:
    bootstrap: /../_bootstrap.php
    colors: true
    memory_limit: 1024M
extensions:
    enabled:
        - Codeception\Extension\RunFailed
modules:
    enabled:
        - Yii2:
            configFile: '/../../config/test.php'

Тесты / unit.suite.yml

actor: UnitTester
modules:
    enabled:
        - Asserts
        - \v1\Helper\Unit

Тесты / functional.suite.yml

actor: FunctionalTester
modules:
    enabled:
        - Asserts
        - \v1\Helper\Functional

Тесты / _bootstrap.php

<?php
define('YII_ENV', 'test');
defined('YII_DEBUG') or define('YII_DEBUG', true);

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

Теперь я хочу проверить действие команды в moduels / v1 / commands / ReportController.php

<?php

namespace app\modules\v1\commands;

class ReportController extends Controller
{
   public function actionOverview()
   {
      echo 1;
   }
}

В моих тестах \ functions \ commands \ ReportControllerCest.php я хочу запустить обзор действий из команд \ ReportController.php, которые я делаю так

<?php
namespace modules\v1\tests\functional\commands;

use v1\FunctionalTester;
use Yii;

class ReportControllerCest
{
    public function _before(FunctionalTester $I)
    {
    }

    public function _after(FunctionalTester $I)
    {
    }

    // tests
    public function tryToTest(FunctionalTester $I)
    {
        Yii::$app->createControllerByID('report')->run('overview');
    }
}

, который не работает и выдает мне следующую ошибку

1) ReportControllerCest: Try to test
 Test  tests\functional\commands\ReportControllerCest.php:tryToTest

  [yii\base\InvalidRouteException] Unable to resolve the request: report/overview

#1  C:\xampp\htdocs\preroll\vendor\yiisoft\yii2\base\Controller.php:189
#2  C:\xampp\htdocs\preroll\modules\v1\tests\functional\commands\ReportControllerCest.php:20
#3  modules\v1\tests\functional\commands\ReportControllerCest->tryToTest

означает, что он не проверяет эти команды / ReportController.php

Вопросы. 1-это то, как модули должны быть проверены с их отдельной папкой тестов? если да, то что я делаю не так? если нет то каков правильный способ сделать это? 2-как я могу проверить команды (консольные команды)?

1 Ответ

0 голосов
/ 23 января 2019

Я оставлю работу, благодаря которой я достиг своей цели для всех, у кого возникла такая же проблема.
Я использовал среду кодирования в Расширенное использование и настроить различные файлы конфигурации для консоли и веб-приложения. тогда просто используйте --env, когда вы запускаете тесты codecept run --env console

...