php AZMock无法在Codeception框架和yii2框架中工作

yrefmtwq  于 2023-10-15  发布在  PHP
关注(0)|答案(1)|浏览(144)

我想模拟静态方法,所以我使用了ApplyMock库https://github.com/Codeception/AspectMock
我试图模拟一个静态方法,但它没有返回预期的模拟结果。
配置方式: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';

$kernel = \AspectMock\Kernel::getInstance();
$kernel->init([
    'debug' => true,
    'includePaths' => [__DIR__ . '/../models'],
    'appDir' => __DIR__ . '/..',
    'excludePaths' => [__DIR__, '/../vendor/codeception', '/../vendor/phpunit'],
    'cacheDir' => '/tmp',
]);

实际测试:

<?php

namespace models;

use app\models\Settings;
use AspectMock\Test as test;

class SampleMockExampleTest extends \Codeception\Test\Unit {

    /**
     * @var \UnitTester
     */
    protected $tester;

    protected function _before() {
        
    }

    protected function _after() {
//        test::clean(); // remove all registered test doubles
    }

    /**
     * 
     */
    public function testMockExample() {
        test::double('app\models\Settings', ['getSettings' => "mock"]);
        var_dump(Settings::getSettings());
        exit;
    }
}
2izufjch

2izufjch1#

在配置时,您需要根据您使用的php框架进行配置。我正在使用Yii2框架,发现了一些不同的Yii2框架设置。请在www.example.com查看框架的配置https://github.com/Codeception/AspectMock/wiki/Example-configs#yii2。
我们需要使用$kernel->loadFile(__DIR__ . '/../vendor/yiisoft/yii2/Yii.php');而不是require_once __DIR__ . '/../vendor/yiisoft/yii2/Yii.php';
下面是我的Yii2框架的工作配置:
tests/_bootstrap.php

<?php

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

require __DIR__ . '/../vendor/autoload.php';

$kernel = AspectMock\Kernel::getInstance();
$kernel->init([
    'debug' => true,
    'includePaths' => [__DIR__ . '/../models'],
    'appDir' => __DIR__ . '/..',
    'excludePaths' => [__DIR__, '/../vendor/codeception', '/../vendor/phpunit'],
    'cacheDir' => '/tmp',
]);
$kernel->loadFile(__DIR__ . '/../vendor/yiisoft/yii2/Yii.php');

相关问题