Страница 1 из 1

Странное поведение Codeception

Добавлено: 2017.03.17, 10:28
vitovt
Делаю два функциональных теста.

Первый выглядит примерно так:

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

<?php use backend\tests\FunctionalTester;

class PaymentsCest
{
    public function paymentsTest(FunctionalTester $I)
    {
        $I->amLoggedInAsAdmin();

        $I->amOnPage('/myadmin/payments');
        $I->see('Payments','h1');

    }
}

Тест проходит хорошо, авторизация как админка срабатывает, все хорошо. Копирую этот же код в соседний файл

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

<?php 

use backend\tests\FunctionalTester;

class ClientsCest
{
 
    public function clientsTest(FunctionalTester $I)
    {
        $I->amLoggedInAsAdmin();
        
        $I->amOnPage('/myadmin/payments');
        $I->see('Payments','h1');
    }
}
В консоли вываливается ошибка. [yii\base\ErrorException] Invalid argument supplied for foreach()

Притом эта ошибка относится к виджету, который строит меню на основе массива.

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

 $sidebar_items = require_once dirname(dirname(dirname(__FILE__))). "/config/admin-aside-items.php";

            echo \backend\widgets\AdminMenu::widget(
                [
                    'options'   => ['class' => 'sidebar-menu'],
                    'items'     => (!empty($sidebar_items) ? $sidebar_items : []),
                    'moduleName'    =>  $this->context->moduleName
                ]
            ); 
Не понимаю, почему один тест срабатывает а на втором идет ошибка?

Re: Странное поведение Codeception

Добавлено: 2017.03.17, 12:37
samdark
Дебаггер пошагово прогоните — будет ясно.

Re: Странное поведение Codeception

Добавлено: 2017.03.17, 12:44
vitovt
Собственно дебаг мод не дает пояснений.

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

Scenario --
 I am logged in as admin
   I grab record "backend\models\test\TestAdmin",{"id":"1"}
  [yii\db\Connection::open] 'Opening DB connection: mysql:host=127.0.0.1;dbname=test'
   I am logged in as "backend\\models\\test\\TestAdmin"
  [yii\web\Session::open] 'Session started'
  [yii\web\User::login] 'User \'1\' logged in from  with duration 0.'
 I am on page "/myadmin/payments"
  [Request Headers] []
  [Page] /myadmin/payments
  [Response] 200
  [Request Cookies] []
  [Response Headers] {"content-type":["text/html; charset=UTF-8"]}
 I see "Payments","h1"
 PASSED

PaymentsCest: Payments test
Signature: PaymentsCest:paymentsTest
Test: tests/functional/PaymentsCest.php:paymentsTest
Scenario --
 I am logged in as admin
   I grab record "backend\models\test\TestAdmin",{"id":"1"}
  [yii\db\Connection::open] 'Opening DB connection: mysql:host=127.0.0.1;dbname=test'
   I am logged in as "backend\\models\\test\\TestAdmin"
  [yii\web\Session::open] 'Session started'
  [yii\web\User::login] 'User \'1\' logged in from  with duration 0.'
 I am on page "/myadmin/payments"
  [Request Headers] []
 ERROR

Re: Странное поведение Codeception

Добавлено: 2017.03.17, 12:53
vitovt
В общем пока что проблема в коде виджета, у него есть метод

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

 protected function normalizeItems($items, &$active)
    {
    }
который на каком-то шаге получал вместо array $items -> boolean $items

но почему - пока выяснить не далось и почему в пером случае тест срабатывал а во втором нет

Re: Странное поведение Codeception

Добавлено: 2017.03.17, 14:11
Loveorigami
может права доступа на отрисовку элементов?