Mockery1.0 注意点

注意点

PHPでのモックオブジェクトには、制限と注意点があります。いくつかの機能はモックできないか、もしくは いまのところ(!) モックできません。そうした状況に出会ったら、ドキュメント化するか、可能であれば解決できるように、どうか、どうか、GitHubでissueを作成してください。注意点のリストは以下の通りです。

  1. Publicの__wakeup()メソッドを含むクラスはモックできますが、モックした__wakeup()メソッドは何も動作せず、エクスペクションを指定することもできません。これはMockeryが__construct()の愚行を無視するため、オブジェクトをシリアライズ/非シリアライズする必要があり、__wakeup()メソッドをモックしようと試みると、通常はBadMethodCallExceptionが投げられる事態を引き起こすからです。
  2. たとえば、__call()メソッドを起動するような、本物ではないメソッドを使用しているクラスは、最低1つのエクスペクションが定義されない限り、例外を投げます。(シンプルにshouldReceive()呼び出すだけで、十分です。)なぜなら、Mockeryにはそのメソッド名を認識する手段がないためです。
  3. Mockeryは本当のクラスを置き換える、2つのシナリオを持っています。インスタンスモックとエイリアスモックです。通常require文かinclude文により実クラスがロードされますが、実クラスがロード済みの場合、両方のシナリオともPHPのfatalエラーを発生させます。これら2つのモックタイプは、オートローディングが使用されており、require()require_once()などを使用した、ファイルベースによる明示的なクラスロードが行われない場合に使用します。
  4. 内部PHPクラスは、Reflectionを使用して完全に分析されません。たとえば、Reflectionはこうした内部クラスのメソッドに対し期待されている引数の詳細を明確にできません。その結果、参照による値を受け取るように定義されているメソッドパラーターで問題が起きます。(Mockeryはこうした状態を認知できませんし、値がスカラーか配列で渡されると仮定しています。)内部クラスのメソッド引数の参照が必要であれば、\Mockery\Configuration::setInternalClassMethodParamMap()メソッドを使用してください。
  5. 実装するインターフェイス名で、大文字小文字を間違えたモックを生成し、次に同じインターフェイスを今度は間違えずに実装したモックを生成すると、PHPのclass_existsと関連するファンクションが大文字小文字を識別しないため、動作が定まりません。こうした間違いを防ぐためには、PHPの::classキーワードを使用してください。

上記の注意点は、PHPのアーキテクチャによるもので、避けがたいと考えられます。ですが皆さんが、もし解決策(もしくは既存の方法より良いやり方)を見つけ出したら、教えてください。

ドキュメント章別ページ

概論

ヘッダー項目移動

注目:アイコン:ページ内リンク設置(リンクがないヘッダーへの移動では、リンクがある以前のヘッダーのハッシュを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)へ移動

その他

?

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