Hacktoberfest 2026:メンテナが10月に向けて印を付けた、オープンで初心者向けの issue。 Hacktoberfest の issue を見る

AspectMock не мокает объект

オープン
#206 コメント 0 件 リアクション 0 件 担当者 0 名 GitHub で見る

まだ誰も着手していません。

評価

難易度
3/5
見積もり時間
1〜2日
初心者へのやさしさ
25/100
issue の種類
バグ
明瞭さ
説明が足りない
活発さ
停滞
技術スタック
php
領域
testing

調査の方向性

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 はありません

コントリビューションガイド

このリポジトリのコントリビューションガイドは索引されていません

はじめの一歩

  1. issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
  2. 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
  3. リポジトリをフォークし、ブランチを切って変更します。
  4. issue 番号を参照したプルリクエストを送ります。

Codeception/AspectMock のほかの issue

Codeception/AspectMock の issue をすべて見る

似ている issue

PHP の issue をもっと見る

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。