1

したがって、主キー ID を介して連絡先を返す非常に単純な (少なくとも現在は) モデルがあります。

class Model_Contact extends \Fuel\Core\Model
{
    public function get_by_id($contact_id)
    {
        return Entity_Contact::find_by_pk($contact_id);
    }
}

クラスは次のEntity_Contactようになります (無関係な配列の内容は省略されています)。

class Entity_Contact extends \Core\Entity_Base
{
    protected static $_table_name = 'contacts';
    protected static $_properties = array(...);
    protected static $_public_settable_properties = array(...);
    protected static $_rules = array(...);
}

注:\Core\Entity_Base伸びます\Fuel\Core\Model_Crud

これをコントローラーで次のように使用する場合があります。

$model = new Model_Contact();
$contact = $model->get_by_id(4);

これを単体テストするには、実際のデータベース呼び出し ( Entity_Contact::find_by_pk) をモックアウトする必要があることはわかっていますが、これを行う方法がわかりません。私は Fuel のModel_crud機能 (DB アクセサーが実際にはドメイン オブジェクト モデルの一部である) を使用しているため、データベースを完全にモックできるかどうかわかりません。または、何か不足している可能性があります。

質問: のテストをどのように書きますModel_Contact::get_by_id()か?

前もって感謝します!

4

2 に答える 2

1

AspectMock を使えば簡単にモックできます。 https://github.com/Codeception/AspectMock

于 2015-02-09T06:48:03.917 に答える
0

メソッドをテストできるように、テストでオブジェクトを作成する必要がある場合があります。

  1. データベースに格納されるオブジェクトを作成します。
  2. get_by_id をテストする
  3. 作成したオブジェクトを削除する

それは世界で最も輝かしいことではありませんが、それはあなたの方法をテストすることを達成するでしょう...ええと?

于 2012-11-29T18:21:11.047 に答える