PHPStan
PHPUユニット
この拡張機能は次の機能を提供します。
createMock()
、 getMockForAbstractClass()
、およびgetMockFromWsdl()
メソッドは、モック オブジェクトとモックされたクラスの交差タイプ (交差タイプの詳細な説明を参照) を返すため、モック オブジェクト ( expects
など) とモック クラスの両方のメソッドが実行されます。オブジェクト上で利用可能です。
MockBuilder
で呼び出されるgetMock()
もサポートされています。
phpDoc 内のFoo|PHPUnit_Framework_MockObject_MockObject
を解釈して、結果が共用体型ではなく交差型になります。
未定義変数エラーを防ぐために、 PHPUnitFrameworkTestCase
クラスの早期終了メソッド呼び出しを定義します。
assertInstanceOf
、 assertTrue
、 assertInternalType
などのさまざまなassert
メソッドに渡される式のタイプを指定します。
PHPStan のレベル 4 と組み合わせると、 assertTrue(true)
などの常に true と常に false のアサートを指摘します。
これには、次の厳密なフレームワーク固有のルールも含まれています (個別に有効にすることができます)。
期待値としてtrue
を指定してassertSame()
使用していないことを確認してください。代わりにassertTrue()
使用する必要があります。
期待値としてfalse
を指定してassertSame()
使用していないことを確認してください。代わりにassertFalse()
使用する必要があります。
期待値としてnull
を指定してassertSame()
使用していないことを確認してください。代わりにassertNull()
使用する必要があります。
2 番目のパラメータとしてcount($variable)
を指定してassertSame()
使用していないことを確認してください。代わりにassertCount($variable)
使用する必要があります。
モックをプロパティに割り当てた後、またはメソッドから返した後でもモックを構成する必要がある場合は、 PHPUnit_Framework_MockObject_MockObject
phpDoc に追加する必要があります。
/** * @return Foo&PHPUnit_Framework_MockObject_MockObject */private function 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;保護された関数 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