Skip to content

Unable to instrument classes in the /vendor directory #139

Open
@kzap

Description

@kzap

I was able to get AspectMock to instrument my own classes in my directory but I can not get it to work on classes in the composer /vendor directory....

Is this even possible?

I tried adding vendor to my includePaths but I get the issue in #112

My bootstrap looks basically like this:

require_once __DIR__.'/../vendor/autoload.php'; // composer autoload

$kernel = \AspectMock\Kernel::getInstance();
$kernel->init([
    'debug' => true,
    'appDir' => __DIR__.'/..',
    'cacheDir' => __DIR__.'/_data/aopcache',
    'includePaths' => [
        __DIR__.'/../repo'
    ],
    'excludePaths' => [
        __DIR__,
    ]
]);

Sample of my test code:

    $testDataStr = 'var=1&var=2';
    $paypalIPN = test::double(new \PayPal\IPN\PPIPNMessage($testDataStr), [
        'getRawData' => ['Returned test double'],
    ]);
    $this->assertTrue($paypalIPN->class->hasMethod('getRawData'));
    $testData = $paypalIPN->getRawData();
    $paypalIPN->verifyInvoked('getRawData'); // fails

fails with:
Expected PayPal\IPN\PPIPNMessage->getRawData to be invoked but it never occurred. Got:

Versions
php 5.6.30
codeception/aspect-mock:2.0.1 @b7f5c50da89419824102400bb4c71988ec33044f
goaop/framework:2.1.2 @6e2a0fe13c1943db02a67588cfd27692bddaffa5
goaop/parser-reflection:1.4.0 @adfc38fee63014880932ebcc4810871b8e33edc9

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions