Skip to content

Mocking multiple types reports errors with phpstan 0.12 #58

Open
@Khartir

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

ondrejmirtes

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

linked a pull request that will close this issue on Feb 7, 2020
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

      Mocking multiple types reports errors with phpstan 0.12 · Issue #58 · phpstan/phpstan-phpunit