0

WPFで簡単なGUIを作成しました。データベースから取得したデータをいくつか紹介したいと思います。しかし、今のところ、受信したデータに対して簡単な計算を行うGUIといくつかの関数しかありません。私の目標は、「誤った」データを生成するモックオブジェクトを作成することであることは知っていますが、どのように開始すればよいかわかりません。それらの1つを作成する方法を教えていただければ、残りも同様に作成できます。これが計算を行う私のクラスです:

        public Statistic showUsersPostCount(Options options)
    {
        Query q = (Query)this.client.DoQuery();
        q.AddAuthor(options.Login);
        q.SetSinceDate(options.DateFrom);
        q.SetUntilDate(options.DateTo);
        q.AddTitleWord(options.Discussion);
        List<Entity> list = (List<Entity>)q.PerformQuery();

        Statistic statistic = new Statistic();

        statistic.UsersPostCount = list.Count;
        return statistic;
    }

この関数は、いくつかの単純な統計を返します。しかし、Queryクラスのコードはありません。このクラスのオブジェクトをモックするにはどうすればよいですか?

4

3 に答える 3

0

提供されたコードでは...それをモックするために、依存関係の代替オブジェクト(この場合は.clientオブジェクト)を提供する何らかの方法が必要になることはありません。

現状では、そのメソッドには入力'オプション'が1つしかありませんが、コードへの影響は比較的最小限です。

さらに、あなたはクラスの例を示していると主張していますが、そうではありません。showUsersPostCountという名前のメソッドのみを示しています。

于 2012-01-12T23:19:56.430 に答える
0

他の人が述べているように、あなたのコードはそのままではモックできません...少なくとも標準のモックツールでは。あなたが「モックできないものをモックする」ことを可能にすることに誇りを持っているモールは常にあります。Molesを使用すると、そのメソッドをそのままモックできます。

とはいえ、内部で制御するものをモックするためにMolesに頼る必要がある場合(ツールはデータベースやファイルなどの外部依存関係をモックするために実際に設計されています)、おそらく設計をより柔軟にすることを検討する必要があります。テスト可能な(つまり、Molesなしでテスト可能な)設計は、全体として優れた設計である可能性が高くなります。

于 2012-01-13T00:10:57.467 に答える
0

コードがモックしたいクラス内のメソッドであると仮定すると、最初のステップは、実装するクラスのインターフェースを作成することです (まだ作成していない場合)。

次に、(具体的なクラスではなく) インターフェイスをモック フレームワークに渡すことができます (私は Moq を使用しましたが、nmock も非常によく似た動作をすると思います)。次に、プロパティ/メソッドがモック フレームワークを介して返すモック データを入力できます。

于 2012-01-12T23:41:42.950 に答える