0

問題なくメソッドに渡されるオブジェクトをインスタンス化できる場合でも、スタブを作成してパラメーターとしてメソッドに渡すことが常に必要ですか。

元。以下でこのメソッドをテストしたいと思います。このメソッドは、TargetDataRanger オブジェクトをパラメーターとして受け取ります。a.) スタブして、b.) 依存関係を壊し、インターフェースの背後に置き、それをスタブして、c.) インスタンス化して、具体的なオブジェクトとしてメソッドに渡す必要があります。

以下のこのケースでは、具体的なオブジェクトを使用して回避できますが、それは賢明であり、いくつかのテストルールまたは何かに違反しますか?

public virtual Dictionary<DateTime, DateTime> ResolveDates(ISeries comparisonSeries, TargetDateRanger sourceRanger)
    {
        Dictionary<DateTime, DateTime> dates = new Dictionary<DateTime, DateTime>();

        foreach (DateTime keyDate in sourceRanger.ValidDates)
            dates.Add(keyDate, this.ResolveDate(comparisonSeries, keyDate));

        return dates;
    }
4

4 に答える 4

0

デフォルトのパラメータを使用できます。

void print(int a, string b = "default")
{
    Console.WriteLine(a + b);
}
于 2013-06-04T19:23:41.467 に答える
0

単体テストでは、スタンドアロンとしてテストします。私はそれを分解し、変数を送り込むことができるドライバーをセットアップし (変数を受け取ることが意図されている場合)、スタブを用意して、期待される結果を表示できるようにします。それは私にとってより良いテスト哲学だと感じていますが、私はプログラミングに比較的慣れていないので、このテスト方法は同時に多くのことを教えてくれます。

それが完了したら、それをより大きなシステムに統合し、新しいドライバーとスタブ出力を使用して再テストし、フロー全体が機能することを確認します。

特にそれが小さなプログラムの小さな部分である場合、具体的な方法を使用して本質的に間違っているとは言えません...しかし、私は物事を分解するのが好きです。

于 2013-06-04T19:25:52.677 に答える