Hacktoberfest 2026: le issue che i maintainer hanno segnato per ottobre, aperte e adatte ai principianti. Sfoglia le issue Hacktoberfest

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

Aperta
#206 0 commenti 0 reazioni 0 assegnatari Vedi su GitHub

Nessuno ha ancora preso questa issue.

Valutazione

Difficoltà
3/5
Tempo stimato
1-2 giorni
Idoneità per principianti
25/100
Tipo di issue
Bug
Chiarezza
Da chiarire
Stato di attività
Ferma
Stack tecnologico
php
Ambito
testing

Direzione di ricerca

Inizia dalla configurazione di bootstrap.php e dalla chiamata a AspectMock::Test::double per app\modules\api\models\base\Methods. Riproduci la chiamata a Methods::tableName() con la configurazione PHP 8.1 e Codeception mostrata, quindi confronta il valore restituito con l'aspettativa configurata del mock. L'attività è completata quando viene identificato il motivo per cui il mock non viene applicato e il comportamento corretto viene documentato o testato.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Descrizione

Не мокается обхект тест запускается хорошо но не работает

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: ~


Lingua principale
PHP
Stelle
784
Fork
132
Metriche di merge delle PR
Nessuna PR unita negli ultimi 30g

Guida per i contributori

Nessuna guida per i contributori indicizzata per questo repository

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di Codeception/AspectMock

Tutte le issue di Codeception/AspectMock

Issue simili

Altre issue su PHP

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.