Я прочитал руководство и последую за установкой и настройкой AspectMock на Yii2 basic. Все в порядке, но, похоже, на самом деле это не работает, объект не издевается. Я думаю, что проблема может быть получена из конфигурации пути, но я не нашел решение. Это мой код:Codeception aspectmock не может издеваться над объектом в Yii2
В загрузочном файле
# tests/codeception/_bootstrap.php
<?php
defined('YII_DEBUG') or define('YII_DEBUG', true);
defined('YII_ENV') or define('YII_ENV', 'test');
defined('YII_TEST_ENTRY_URL') or define('YII_TEST_ENTRY_URL', parse_url(\Codeception\Configuration::config()['config']['test_entry_url'], PHP_URL_PATH));
defined('YII_TEST_ENTRY_FILE') or define('YII_TEST_ENTRY_FILE', dirname(dirname(__DIR__)) . '/web/index-test.php');
$kernel = \AspectMock\Kernel::getInstance();
$kernel->init([
'debug' => true,
'includePaths' => [__DIR__.'/../../'],
]);
$kernel->loadFile(__DIR__ . '/../../vendor/yiisoft/yii2/Yii.php');
require_once(__DIR__ . '/../../vendor/autoload.php');
require_once(__DIR__ . '/../../vendor/yiisoft/yii2/Yii.php');
$_SERVER['SCRIPT_FILENAME'] = YII_TEST_ENTRY_FILE;
$_SERVER['SCRIPT_NAME'] = YII_TEST_ENTRY_URL;
$_SERVER['SERVER_NAME'] = parse_url(\Codeception\Configuration::config()['config']['test_entry_url'], PHP_URL_HOST);
$_SERVER['SERVER_PORT'] = parse_url(\Codeception\Configuration::config()['config']['test_entry_url'], PHP_URL_PORT) ?: '80';
Yii::setAlias('@tests', dirname(__DIR__));
В тестовом файле
# test/codeception/models/UserTest.php
<?php
namespace tests\codeception\unit\models;
use yii\codeception\TestCase;
use app\models\User;
use AspectMock\Test as test;
class UserTest extends TestCase
{
protected function tearDown()
{
test::clean();
}
public function testUserObject()
{
$user = test::double(User::className(), [
'getId' => '5'
]);
$user->getId();
$user->verifyInvoked('getId');
}
}
Это результат
[Exception] Названные приложения \ модели \ User-> GetId , но это прокси-сервер для определения класса . Вероятно, вы пытались получить доступ к методу экземпляра. Построить экземпляр этого класса
Я что-то не так? Пожалуйста помоги! Заранее спасибо.