2013-04-16 17 views
6

私はMockeryに与えられたメソッドが少なくとも1回は呼び出されていると主張しようとしています。Mockery shouldReceive() - > once()がうまく動作していないようです

私のテストクラスがある:あなたが見ることができるように

use \Mockery as m; 

class MyTest extends \PHPUnit_Framework_TestCase 
{ 

    public function testSetUriIsCalled() 
    { 
     $uri = 'http://localhost'; 
     $httpClient = m::mock('Zend\Http\Client'); 
     $httpClient->shouldReceive('setUri')->with($uri)->atLeast()->once(); 
    } 

} 

は、(たぶん)はsetUriが呼び出されるという期待を作成することを一つの試験があります。他のコードは含まれていないので、と呼べるかもしれませんが、私のテストは合格します。なぜ誰かが説明できますか?

答えて

38

期待通りの検証を実行するには、Mockery:close()に電話する必要があります。また、次のテストケース用の擬似コンテナーのクリーンアップも処理します。

public function tearDown() 
{ 
    parent::tearDown(); 
    m::close(); 
} 
2

すべてのテストクラスのcloseメソッドを呼び出しすることを避けるために、あなただけのようにのようなあなたのPHPUnitの設定にTestListenerを追加することができます。

<listeners> 
    <listener class="\Mockery\Adapter\Phpunit\TestListener"></listener> 
</listeners> 

このアプローチはdocsに説明されています。リンクドキュメントから注意すべき

ことの一つは、次のとおりです。

がComposerのか、嘲笑のオートローダーは、ブートストラップファイルに存在しているか、また、上記のTestListenerのファイルを指して、「ファイル」属性を定義する必要がありますことを確認してくださいクラス。

関連する問題