Codeception Yii2 - Не удается запустить тесты, помогите

Всё про тестирование в Yii 2.0
Ответить
BudVic
Сообщения: 3
Зарегистрирован: 2018.04.12, 10:53

Codeception Yii2 - Не удается запустить тесты, помогите

Сообщение BudVic » 2018.04.12, 12:04

Настроил тестовое окружение по этому мануалу: https://github.com/yiisoft/yii2-app-basic
На дефолтном yii2 advanced тесты запускаются и отрабатывают, а в проекте над которым я работаю вот такая история:

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

$ codecept run acceptance -vvv
Codeception PHP Testing Framework v2.4.1
Powered by PHPUnit 7.2-g1fb5baf0c by Sebastian Bergmann and contributors.

Frontend\tests.acceptance Tests (1) ------------------------------------------------------------------------------------
Modules: WebDriver, Yii2
------------------------------------------------------------------------------------------------------------------------
HomeCest: Check home
Signature: frontend\tests\acceptance\HomeCest:checkHome
Test: tests\acceptance\HomeCest.php:checkHome
Scenario --
  Destroying application
  Starting application
  [Selenium server Logs]
  11:55:52.-92 INFO - /session: Executing POST on /session (handler: BeginSession)
  11:55:53.-659 INFO - Capabilities are: Capabilities {browserName=chrome}
  11:55:53.-656 INFO - Capabilities {browserName=chrome} matched class org.openqa.selenium.remote.server.ServicedSession$Factory (provider: org.openqa.selenium.chrome.ChromeDriverService)
  11:55:53.-655 INFO - Capabilities {browserName=chrome} matched class org.openqa.selenium.remote.server.ServicedSession$Factory (provider: org.openqa.selenium.chrome.ChromeDriverService)
  11:56:01.-439 INFO - /session/51b3c1da509c479e039c20a3dd1f8ce6/log/types: Executing GET on /session/51b3c1da509c479e039c20a3dd1f8ce6/log/types (handler: GetLogTypes)
  11:56:01.-401 INFO - To downstream: {"sessionId":"51b3c1da509c479e039c20a3dd1f8ce6","status":0,"value":["browser","driver"]}
  11:56:01.-376 INFO - /session/51b3c1da509c479e039c20a3dd1f8ce6/log: Executing POST on /session/51b3c1da509c479e039c20a3dd1f8ce6/log (handler: GetLogsOfType)

  [Selenium browser Logs]  EMPTY
  [Selenium driver Logs]  EMPTY
  Screenshot and page source were saved into 'C:\OSPanel\domains\crypto\frontend\tests/_output\' dir
 ERROR

  [Transaction] Rolling back 0 transactions
  Destroying application
  Suite done, restoring $_SERVER to original
------------------------------------------------------------------------------------------------------------------------


Time: 13.13 seconds, Memory: 12.00MB

There was 1 error:

---------
1) HomeCest: Check home
 Test  tests\acceptance\HomeCest.php:checkHome

  [yii\base\InvalidConfigException] Unable to determine the request URI.

C:\OSPanel\domains\crypto\vendor\yiisoft\yii2\web\Request.php:1009
C:\OSPanel\domains\crypto\vendor\yiisoft\yii2\web\Request.php:969
C:\OSPanel\domains\crypto\vendor\yiisoft\yii2\base\Component.php:139
C:\OSPanel\domains\crypto\frontend\components\SecureBootstrap.php:75
C:\OSPanel\domains\crypto\vendor\yiisoft\yii2\base\BaseObject.php:109
C:\OSPanel\domains\crypto\vendor\yiisoft\yii2\di\Container.php:375
C:\OSPanel\domains\crypto\vendor\yiisoft\yii2\di\Container.php:156
C:\OSPanel\domains\crypto\vendor\yiisoft\yii2\BaseYii.php:345
C:\OSPanel\domains\crypto\vendor\yiisoft\yii2\base\Application.php:322
C:\OSPanel\domains\crypto\vendor\yiisoft\yii2\web\Application.php:69
C:\OSPanel\domains\crypto\vendor\yiisoft\yii2\base\Application.php:273
C:\OSPanel\domains\crypto\vendor\yiisoft\yii2\base\BaseObject.php:109
C:\OSPanel\domains\crypto\vendor\yiisoft\yii2\base\Application.php:206
C:\OSPanel\domains\crypto\vendor\yiisoft\yii2\di\Container.php:383
C:\OSPanel\domains\crypto\vendor\yiisoft\yii2\di\Container.php:156
C:\OSPanel\domains\crypto\vendor\yiisoft\yii2\BaseYii.php:349
C:\OSPanel\domains\crypto\vendor\codeception\codeception\src\Codeception\Lib\Connector\Yii2.php:111
C:\OSPanel\domains\crypto\vendor\codeception\codeception\src\Codeception\Module\Yii2.php:298
C:\OSPanel\domains\crypto\vendor\codeception\codeception\src\Codeception\Subscriber\Module.php:56
C:\OSPanel\domains\crypto\vendor\symfony\event-dispatcher\EventDispatcher.php:212
C:\OSPanel\domains\crypto\vendor\symfony\event-dispatcher\EventDispatcher.php:44
C:\OSPanel\domains\crypto\vendor\codeception\phpunit-wrapper\src\Listener.php:133
C:\OSPanel\domains\crypto\vendor\codeception\phpunit-wrapper\src\Listener.php:102
C:\OSPanel\domains\crypto\vendor\phpunit\phpunit\src\Framework\TestResult.php:372
C:\OSPanel\domains\crypto\vendor\codeception\codeception\src\Codeception\Test\Test.php:75
C:\OSPanel\domains\crypto\vendor\phpunit\phpunit\src\Framework\TestSuite.php:776
C:\OSPanel\domains\crypto\vendor\codeception\phpunit-wrapper\src\Runner.php:114
C:\OSPanel\domains\crypto\vendor\codeception\codeception\src\Codeception\SuiteManager.php:157
C:\Users\v.budko\AppData\Roaming\Composer\vendor\codeception\codeception\src\Codeception\Codecept.php:189
C:\Users\v.budko\AppData\Roaming\Composer\vendor\codeception\codeception\src\Codeception\Codecept.php:158
C:\Users\v.budko\AppData\Roaming\Composer\vendor\codeception\codeception\src\Codeception\Command\Run.php:466
C:\Users\v.budko\AppData\Roaming\Composer\vendor\codeception\codeception\src\Codeception\Command\Run.php:361
C:\Users\v.budko\AppData\Roaming\Composer\vendor\symfony\console\Command\Command.php:252
C:\Users\v.budko\AppData\Roaming\Composer\vendor\symfony\console\Application.php:865
C:\Users\v.budko\AppData\Roaming\Composer\vendor\symfony\console\Application.php:241
C:\Users\v.budko\AppData\Roaming\Composer\vendor\symfony\console\Application.php:143
C:\Users\v.budko\AppData\Roaming\Composer\vendor\codeception\codeception\src\Codeception\Application.php:108
C:\Users\v.budko\AppData\Roaming\Composer\vendor\codeception\codeception\codecept:42


ERRORS!
Tests: 1, Assertions: 0, Errors: 1.
Как исправить эту ошибку и чем она собственно вызвана?

Nex-Otaku
Сообщения: 809
Зарегистрирован: 2016.07.09, 21:07

Re: Codeception Yii2 - Не удается запустить тесты, помогите

Сообщение Nex-Otaku » 2018.04.23, 06:28

Вызвано вот этим:

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

C:\OSPanel\domains\crypto\frontend\components\SecureBootstrap.php:75
Здесь у тебя идёт обращение к "request", а в тесте его нет, потому что "acceptance" тест запускает "app-frontend" в консольном режиме.

Решение - не запускать "SecureBootstrap", если приложение "frontend" запущено в консольном режиме.

frontend/confg/main.php

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

$bootstrapComponents = (php_sapi_name() === "cli")
    ? []
    : [
        'log', 
        'app\components\SecureBootstrap',
        ...
    ];

return [
    'id' => 'app-frontend',
    'basePath' => dirname(__DIR__),
	'bootstrap' => $bootstrapComponents,
    ...
];
P.S. В доках, кстати, про это ничего нет, делюсь личным опытом.

Ответить