Skip to content

Commit 52eb1e0

Browse files
authored
[PhpUnit] Skip different object on PreferPHPUnit(This/Self)CallRector (#480)
* [PhpUnit] Skip different object on PreferPHPUnit(This/Self)CallRector * cs fix
1 parent 35ec732 commit 52eb1e0

File tree

3 files changed

+40
-0
lines changed

3 files changed

+40
-0
lines changed
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
<?php
2+
3+
namespace Rector\PHPUnit\Tests\CodeQuality\Rector\Class_\PreferPHPUnitSelfCallRector\Fixture;
4+
5+
use PHPUnit\Framework\TestCase;
6+
7+
final class SkipDifferentObject extends TestCase
8+
{
9+
public function testMe()
10+
{
11+
$this->transport('webhook')
12+
->dispatched()
13+
->assertCount(1)
14+
->assertContains(SendWebhookMessage::class);
15+
}
16+
}
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
<?php
2+
3+
namespace Rector\PHPUnit\Tests\CodeQuality\Rector\Class_\PreferPHPUnitThisCallRector\Fixture;
4+
5+
use PHPUnit\Framework\TestCase;
6+
7+
final class SkipDifferentObjectType extends TestCase
8+
{
9+
public function testMe()
10+
{
11+
$someMock = $object->execute()::createMock('stdClass');
12+
}
13+
}

rules/CodeQuality/NodeAnalyser/AssertMethodAnalyzer.php

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,9 @@
77
use PhpParser\Node\Expr\MethodCall;
88
use PhpParser\Node\Expr\StaticCall;
99
use PHPStan\Reflection\ClassReflection;
10+
use PHPStan\Type\ObjectType;
1011
use Rector\NodeNameResolver\NodeNameResolver;
12+
use Rector\NodeTypeResolver\NodeTypeResolver;
1113
use Rector\PHPUnit\CodeQuality\Enum\NonAssertStaticableMethods;
1214
use Rector\PHPUnit\Enum\PHPUnitClassName;
1315
use Rector\Reflection\ReflectionResolver;
@@ -17,11 +19,20 @@
1719
public function __construct(
1820
private NodeNameResolver $nodeNameResolver,
1921
private ReflectionResolver $reflectionResolver,
22+
private NodeTypeResolver $nodeTypeResolver
2023
) {
2124
}
2225

2326
public function detectTestCaseCall(MethodCall|StaticCall $call): bool
2427
{
28+
$objectCaller = $call instanceof MethodCall
29+
? $call->var
30+
: $call->class;
31+
32+
if (! $this->nodeTypeResolver->isObjectType($objectCaller, new ObjectType('PHPUnit\Framework\TestCase'))) {
33+
return false;
34+
}
35+
2536
$methodName = $this->nodeNameResolver->getName($call->name);
2637
if (! str_starts_with((string) $methodName, 'assert') && ! in_array(
2738
$methodName,

0 commit comments

Comments
 (0)