[PHP]Mockeryでconst値を含むクラスをモックする方法

カテゴリ: PHP | タグ:

例えば、以下のようなクラスがあって、const MAX_ITEM_PER_USER = 200として定義されている200の値を、PHPUnitによるテストのときだけ変更したい場合があります。

class UserItem 
{
    const MAX_ITEM_PER_USER = 200;
}

本来であれば、UserItemにstatic functionとしてgetterを用意したほうが、テストしやすいコードになるのですが、事情によっては既存のクラスにメソッドを追加しづらい、追加できない場合もあります。

解決方法

このような場合は、Testの中に下記のようなスタブクラスを予め用意しておきます。

class UserItemStub 
{
    const MAX_ITEM_PER_USER = 5;
}

その上で、Mockery::namedMockを利用して、先程作ったスタブクラスをモックとして使用すれば良いです

// モックする
Mockery::namedMock(UserItem::class, UserItemStub::class);

// 値を取得するとモックオブジェクトのconst値が取得できる
echo (UserItemStub::CHUNK_SIZE);   // 5

Amazonでおトクに買い物する方法
AmazonチャージでポイントGET


Amazonは買いもの前にAmazonギフト券をチャージしてポイントをゲットしないと損!

こちらもおススメ

コメントを残す

メールアドレスが公開されることはありません。