Mockery1.0 PHPUnitとの統合

PHPUnitとの統合

Mockeryは簡単に利用できる スタンドアローン モックオブジェクトフレームワークとして設計されていますので、テストフレームワークとの統合は完全に任意です。Mockeryを統合するには、テストへ以下のようにtearDown()メソッドを定義する必要があります。(Mockeryに、より短い名前空間のエイリアスを使えます。)

public function tearDown() {
    \Mockery::close();
}

この静的呼び出しは、現在のテストで使用したMockeryコンテナをクリーンアップし、エクスペクションで必要な確認のタスクを実行します。

簡潔にMockeryを使用したい場合、より短いエイリアスをMockeryの名前空間に使用することもできます。

use \Mockery as m;

class SimpleTest extends \PHPUnit\Framework\TestCase
{
    public function testSimpleMock() {
        $mock = m::mock('simplemock');
        $mock->shouldReceive('foo')->with(5, m::any())->once()->andReturn(10);

        $this->assertEquals(10, $mock->foo(5));
    }

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

Mockeryにはオートローダーが含まれていますので、 require_once()をテストで呼び出す必要はありません。これを利用するには、Mockeryを確実にinclude_pathへ置き、テストスーツのBootstrap.phpTestHelper.phpファイルへ以下のコードを追加してください。

require_once 'Mockery/Loader.php';
require_once 'Hamcrest/Hamcrest.php';

$loader = new \Mockery\Loader;
$loader->register();

Composerを使用している場合は、Composerが生成したオートローダーファイルを読み込むだけです。

require __DIR__ . '/../vendor/autoload.php'; // vendorディレクトリーが一段上の階層と仮定

 

注意:Hamcrest1.0.0より前のバージョンでは、Hamcrest.phpファイル名は小文字の"h"(たとえばhamcrest.php)でした。Hamcrestを1.0.0へアップグレードする場合は、全プロジェクトのファイル名を確認するのを忘れないでください。

MockeryをPHPUnitと統合し、closeメソッドの呼び出しと、コードカバレージメソッドからMockery自身を削除するには、 テストケースで\Mockery\Adapter\Phpunit\MockeryTestCaseを拡張してください。

class MyTest extends \Mockery\Adapter\Phpunit\MockeryTestCase
{

}

提供しているトレイトを使用し、別の書き方もできます。

class MyTest extends \PHPUnit\Framework\TestCase
{
    use \Mockery\Adapter\Phpunit\MockeryPHPUnitIntegration;
}

MockeryTestCaseを拡張するか、MockeryPHPUnitIntegrationを使用するのは、Mockery1.0.0からMockeryとPHPUnitを統合するため、 推奨している方法 です。

PHPUnitリスナー

1.0.0より前のリリースでMockeryは、テストの最後でMockery::close()を呼び出すためのPHPUnitリスナーを提供していました。

現在、Mockery::close()が呼び出されない場合にテストを失敗にするために、PHPUnitリスナーを提供しています。トレイトを使い忘れたり、MockeryTestCaseを拡張し忘れたりしたケースを見分けるのに役立つでしょう。

PHPUnitのXML設定を使うアプローチの場合は、TestListenerをロードするために、以下のコードを読み込んでください。

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

ComposerかMockeryのオートローダーをブートストラップファイルへ確実に用意するか、もしくは"file"属性がTestListenerクラスを指すようにする必要があります。

注意:TestListenerはPHPUnitバージョン6以降で動作します。

PHPUnitのバージョン5以前では、テストリスナーは動作しません。

テストスーツをプログラマティックに生成している場合は、リスナーを以下のように追加できます。

// テストスーツの生成
$suite = new PHPUnit\Framework\TestSuite();

// リスナーを生成し、スーツへ追加する
$result = new PHPUnit\Framework\TestResult();
$result->addListener(new \Mockery\Adapter\Phpunit\TestListener());

// テストの実行
$suite->run($result);

 

より独立性を高めるため、PHPUnitはテストを個別のPHPプロセスで実行する機能を提供しています。MockeryはモックのエクスペクションをMockery::close()メソッドを使用し確認しており、各テストの終了時にこのメソッドを自動的に呼び出すために、PHPUnitリスナーを提供しています。

しかしながら、このリスナーはPHPUnitのプロセスを個別で実行した場合、正しく呼び出されず、エクスペクションの結果は考慮されないため、Mockery\Exceptionは発生しません。これを防ぐには、Mockeryが提供するPHPUnitのTestListenerは使用せず、明確にMockery::closeを呼び出す必要があります。簡単な解決策は、以前説明したとおりに、tearDown()メソッドの中でこれを呼び出します。

ドキュメント章別ページ

概論

ヘッダー項目移動

注目:アイコン:ページ内リンク設置(リンクがないヘッダーへの移動では、リンクがある以前のヘッダーのハッシュをURLへ付加します。

移動

クリックで即時移動します。

バージョン

設定

適用ボタンクリック後に、全項目まとめて適用されます。

カラーテーマ
和文指定 Pagination
和文指定 Scaffold
Largeスクリーン表示幅
インデント
本文フォント
コードフォント
フォント適用確認

フォントの指定フィールドから、フォーカスが外れると、当ブロックの内容に反映されます。EnglishのDisplayもPreviewしてください。

フォント設定時、表示に不具合が出た場合、当サイトのクッキーを削除してください。

バックスラッシュを含むインライン\Code\Blockの例です。

以下はコードブロックの例です。

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class User extends Model
{
    /**
     * ユーザに関連する電話レコードを取得
     */
    public function phone()
    {
        return $this->hasOne('App\Phone');
    }
}

設定を保存する前に、表示が乱れないか必ず確認してください。CSSによるフォントファミリー指定の知識がない場合は、フォントを変更しないほうが良いでしょう。

キーボード・ショートカット

オープン操作

PDC

ページ(章)移動の左オフキャンバスオープン

HA

ヘッダー移動モーダルオープン

MS

移動/設定の右オフキャンバスオープン

ヘッダー移動

T

最初のヘッダーへ移動

E

最後のヘッダーへ移動

NJ

次ヘッダー(H2〜H4)へ移動

BK

前ヘッダー(H2〜H4)へ移動

その他

?

このヘルプページ表示
閉じる