为模块yii2创建测试

时间:2019-01-21 08:35:28

标签: testing yii2 codeception yii2-basic-app

嗨,我是yii2测试的新手,我在应用程序/测试中设置了测试环境并进行了测试,并且工作正常。 现在,我想为我的一个模块(模块/ v1)设置测试,其中包含命令,组件,控制器和模型文件夹。 我已经使用codecept bootstrap在modules / v1中为测试创建了初始设置,并按照以下步骤进行设置

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'

tests / unit.suite.yml

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

tests / functional.suite.yml

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

tests / _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;
   }
}

在我的tests \ functional \ commands \ ReportControllerCest.php中,我想从commands \ 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 :(得分:0)

我会把工作留给其他遇到相同问题的人。
我在Advanced Usage中使用了代码接收环境 并为控制台和网络应用设置不同的配置文件。 然后在您运行测试时使用--env codecept run --env console