AspectMock не мокает объект
まだ誰も着手していません。
評価
調査の方向性
bootstrap.php のセットアップと、app\modules\api\models\base\Methods に対する AspectMock::Test::double の呼び出しから始めます。示されている PHP 8.1 および Codeception の設定で Methods::tableName() の呼び出しを再現し、その後、返された値を設定されたモックの期待値と比較します。モックが適用されない理由を特定し、修正後の動作を文書化またはテストできれば完了です。
索引モデルが issue の本文から書いたものです。
説明
Не мокается обхект тест запускается хорошо но не работает
bootstrap.php
<?php
defined('YII_ENV') or 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,
'appDir' => 'app',
'cacheDir' => __DIR__ . '/../runtime/myapp',
'includePaths' => [
__DIR__.'/..'
],
'excludePaths' => [__DIR__]
]);
$kernel->loadFile(__DIR__ . '/../vendor/yiisoft/yii2/Yii.php');
Yii::setAlias('@tests', dirname(__DIR__));
Yii::setAlias('@app', dirname(dirname(__DIR__)));
сам код
класс который мокаю
<?php
namespace app\modules\api\models\base;
use app\base\db\ActiveRecord;
class Methods extends ActiveRecord
{
static protected $structure = [
'name' => [
'title' => 'Имя',
'type' => 'string',
'identify' => true,
'maxLength' => 255,
],
'description' => [
'title' => 'Описание',
'type' => 'text',
],
];
public static $permanentlyDelete = true;
protected static $hiddable = false;
protected static $modelTitle = 'Методы API';
protected static $recordTitle = 'метод API';
protected static $accusativeRecordTitle = 'метод API';
protected static $readonly = true;
/**
* @inheritdoc
*/
public static function tableName()
{
return 'api_methods';
}
/**
* @inheritdoc
*/
public function rules()
{
return [];
}
}
$methods = \AspectMock\Test::double('app\modules\api\models\base\Methods', [
'tableName' => 34
]);
$n2 = Methods::tableName();
//$methods->verifyInvoked('tableName');
print_r($n2); печатает api_methods вместо 34
exit;
Details
- Codeception version:
- PHP Version: 8.1
- Operating System: windiws
codeception.yml
namespace: Tests
support_namespace: Support
paths:
tests: tests
output: tests/_output
data: tests/Support/Data
support: tests/Support
envs: tests/_envs
settings:
bootstrap: ../_bootstrap.php
error_level: E_ALL & ~E_STRICT & ~E_DEPRECATED
memory_limit: 1024M
colors: true
actor_suffix: Tester
extensions:
enabled:
- Codeception\Extension\RunFailed
modules:
config:
Yii2:
configFile: 'config/test-local.php'
cleanup: false
# Codeception Test Suite Configuration
#
# Suite for unit or integration tests.
Unit.suite.yml
actor: UnitTester
modules:
enabled:
- Asserts
- Yii2:
part: [orm]
- Db:
dsn: 'mysql:host=db;dbname=lkp'
user: 'root'
password: 'lkp_dev_passwd'
step_decorators: ~
- 主要言語
- PHP
- スター
- 784
- フォーク
- 132
- PR マージ指標
- 30日以内にマージされた PR はありません
コントリビューションガイド
このリポジトリのコントリビューションガイドは索引されていません
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
Codeception/AspectMock のほかの issue
-
難易度 2/5 1〜3時間 初心者へのやさしさ 35/100
Codeception/AspectMock#208 · コメント 2 件 · リアクション 5 件 ·
-
難易度 3/5 1〜2日 初心者へのやさしさ 35/100
Codeception/AspectMock#203 ·
-
難易度 1/5 1時間未満 初心者へのやさしさ 35/100
Codeception/AspectMock#202 · コメント 5 件 · リアクション 2 件 ·
-
難易度 3/5 1〜2日 初心者へのやさしさ 42/100
Codeception/AspectMock#201 · コメント 1 件 ·
-
難易度 4/5 3〜5日 初心者へのやさしさ 25/100
Codeception/AspectMock#196 · コメント 1 件 ·
Codeception/AspectMock の issue をすべて見る
似ている issue
-
Bug
難易度 2/5 1〜3時間 初心者へのやさしさ 70/100
Automattic/safe-publish#594 ·
-
needs-triage Platform(Default)
難易度 2/5 1〜3時間 初心者へのやさしさ 75/100
-
HttpClient
難易度 2/5 1〜3時間 初心者へのやさしさ 75/100
symfony/symfony-docs#23092 ·
-
sync-en
難易度 1/5 1時間未満 初心者へのやさしさ 90/100
-
sync-en
難易度 1/5 1時間未満 初心者へのやさしさ 95/100