2016-06-20 8 views
0
class MainTest extends TestCase 
{ 
    public function testMain() 
    { 
     $stub = $this->createMock(Project\NotImplementedClass::class); 

     $stub->method('doSomething') 
      ->will($this->returnCallback(function ($string) { 
       return strtoupper($string); 
      })); 

     $this->assertEquals('ABC', $stub->doSomething('abc')); 
    } 
} 

PhpStormはそのメソッドdoSomethingが存在しないことを示します。私はメソッドを自動補完できるプラグインを検索しました。これのためのプラグインはありますか?PhpStorm PHPUnitのサポート

+0

をあなたが定義する 'doSomething'を期待している場合は?これが単なる "hello world"単体テストであれば、自分でメソッドを定義してスタブしてみてはいかがですか? –

答えて

1

PHPStormのオートコンプリートは、タイプヒントに大きく依存します。あなたの場合 - $this->createMock()PHPUnit_Framework_MockObject_MockObjectを返すので、方法がないと不平を言います。

何が変数の型ヒントを「上書き」されて行うことができます。

/** @var Project\NotImplementedClass|PHPUnit_Framework_MockObject_MockObject $stub */ 
$stub = $this->createMock(Project\NotImplementedClass::class); 

たり、似た@returnのdocblockと方法でモック作成を置くことができます。

これは、PHPStormに両方のクラスをオートコンプリートにするよう指示します。

0

Dynamic Return Type-pluginを使用して、PHPUnitのタイプヒントを改善しています。完璧ではありませんが、セットアップして使用するのは簡単です。プラグインを使用すると、パラメータの値に基づいてメソッドの戻り値の型を定義できます。

以下の内容で、プロジェクトのルートにファイルdynamicReturnTypeMeta.jsonを追加します。

{ 
    "methodCalls": [ 
     { 
      "class": "\\PHPUnit_Framework_TestCase", 
      "method": "createMock", 
      "position": 0, 
      "mask": "%s|PHPUnit_Framework_MockObject_MockObject" 
     } 
    ], 
    "functionCalls": [] 
} 
関連する問題