Skip to content

Mocking multiple types reports errors with phpstan 0.12 #58

Description

@Khartir

Calling createMock with multiple Types causes phpstan to report errors:

A class like

<?php declare(strict_types=1);

namespace App;

use PHPUnit\Framework\TestCase;

class Test extends TestCase
{

    public function testDummy(): void {
        $this->createMock([\DateTimeInterface::class, \ArrayAccess::class]);
    }
}

throws the following errors:

 ------ ------------------------------------------------------------------------------------------------------------------------------------------------- 
  Line   Test.php                                                                                                                                         
 ------ ------------------------------------------------------------------------------------------------------------------------------------------------- 
  11     Parameter #1 $originalClassName of method PHPUnit\Framework\TestCase::createMock() expects class-string<mixed>, array<int, class-string> given.  
  11     Unable to resolve the template type T in call to method PHPUnit\Framework\TestCase::createMock()                                         
 ------ ------------------------------------------------------------------------------------------------------------------------------------------------- 

The error also occurs, if there is only one class given, but not as a string, but as an array:
$this->createMock([\DateTimeInterface::class]); produces the same error.

This is working fine in phpstan 0.11

Activity

  1. ondrejmirtes commented on Jan 18, 2020

    @ondrejmirtes
    Member

    I inspected the code in 0.11 and it couldn't have worked before, you just received MockObject without intersected mocked classes. So 0.12 just surfaces that it doesn't do what you want it to do. Of course it can be fixed with a similar extension I reverted here (in favour of stubs): https://github.com/phpstan/phpstan-phpunit/blob/79d30f7074ecb773c70147a01478b31efca79023/src/Type/PHPUnit/CreateMockDynamicReturnTypeExtension.php

  2. VincentLanglet commented on Nov 1, 2025

    @VincentLanglet
    Contributor

    Create mock donc support array of classes, so I assume this issue and the related PR (#61) can be closed
    https://github.com/sebastianbergmann/phpunit/blob/79fc96ed5eaf384d77a4deb2b1b2a02518666d18/src/Framework/TestCase.php#L1157

  3. ondrejmirtes commented on Nov 1, 2025

    @ondrejmirtes
    Member

    Thanks!

  4. github-actions commented on Dec 3, 2025

    @github-actions

    This thread has been automatically locked since there has not been any recent activity after it was closed. Please open a new issue for related bugs.

  5. locked as resolved and limited conversation to collaborators on Dec 3, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

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