PHPStan
PHPUnit
이 확장은 다음과 같은 기능을 제공합니다.
createMock()
, getMockForAbstractClass()
및 getMockFromWsdl()
메소드는 모의 객체와 모의 클래스의 교차 유형(교차 유형에 대한 자세한 설명 참조)을 반환하므로 두 메소드 모두 모의 객체(예: expects
)와 모의 클래스에서 반환됩니다. 객체에서 사용 가능합니다.
MockBuilder
에서 호출되는 getMock()
도 지원됩니다.
phpDoc에서 Foo|PHPUnit_Framework_MockObject_MockObject
해석하여 통합 유형 대신 교차 유형을 생성합니다.
정의되지 않은 변수 오류를 방지하기 위해 PHPUnitFrameworkTestCase
클래스에 대한 조기 종료 메서드 호출을 정의합니다.
assertInstanceOf
, assertTrue
, assertInternalType
등과 같은 다양한 assert
메소드에 전달되는 표현식 유형을 지정합니다.
PHPStan의 레벨 4와 결합하여 assertTrue(true)
등과 같은 항상 참 및 항상 거짓 주장을 지적합니다.
또한 다음과 같은 엄격한 프레임워크별 규칙이 포함되어 있습니다(별도로 활성화할 수 있음).
예상 값이 true
인 assertSame()
사용하고 있지 않은지 확인하세요. 대신에 assertTrue()
사용해야 합니다.
예상 값으로 false
사용하여 assertSame()
사용하고 있지 않은지 확인하십시오. 대신에 assertFalse()
사용해야 합니다.
예상 값으로 null
포함된 assertSame()
사용하고 있지 않은지 확인하세요. 대신에 assertNull()
사용해야 합니다.
두 번째 매개변수로 count($variable)
와 함께 assertSame()
사용하고 있지 않은지 확인하십시오. 대신에 assertCount($variable)
사용해야 합니다.
모의 개체를 속성에 할당하거나 메서드에서 반환한 후에도 구성해야 하는 경우 PHPUnit_Framework_MockObject_MockObject
phpDoc에 추가해야 합니다.
/** * @return Foo&PHPUnit_Framework_MockObject_MockObject */비공개 함수 createFooMock() { return $this->createMock(Foo::class); }공개 함수 testSomething() { $fooMock = $this->createFooMock(); $fooMock->method('doFoo')->will($this->returnValue('test')); $fooMock->doFoo(); }
교차 유형의 올바른 구문은 Foo&PHPUnit_Framework_MockObject_MockObject
입니다. Foo|PHPUnit_Framework_MockObject_MockObject
도 지원되지만 생태계 및 레거시 이유로만 지원됩니다.
모의 클래스가 완전히 구성되었고 모의 클래스의 메서드만 값에 대해 호출되어야 하는 경우 모의 클래스만 입력해도 괜찮습니다.
/** @var Foo */private $foo;protected 함수 setUp() { $fooMock = $this->createMock(Foo::class); $fooMock->method('doFoo')->will($this->returnValue('test')); $this->foo = $fooMock; }공개 함수 testSomething() { $this->foo->doFoo(); // $this->foo->method() 및 Expects()는 더 이상 호출할 수 없습니다.}
이 확장을 사용하려면 Composer에서 필요합니다.
composer require --dev phpstan/phpstan-phpunit
phpstan/extension-installer도 설치하면 모든 준비가 완료됩니다!
phpstan/extension-installer
사용하지 않으려면 프로젝트의 PHPStan 구성에 Extension.neon을 포함하세요.
includes: - vendor/phpstan/phpstan-phpunit/extension.neon
프레임워크별 검사를 수행하려면 다음 파일도 포함하세요.
- vendor/phpstan/phpstan-phpunit/rules.neon