1

ほんの一例です。プロパティの設定に反応するクラスがあります。より具体的には、すべてが設定されると、アセンブリがロードされる3つのプロパティがあります。その後、イベントがトリガーされます。

この動作の単体テストは次のようになります。

bool assemblyLoaded = false;
loader.AssemblyLoaded += () => assemblyLoaded = true;
loader.Type = "someType";

Assert.IsFalse(assemblyLoaded); // not loaded, only one property was set

これにより、プロパティごとに1つずつ、合計3つの単体テストが実行されます。したがって、コードの複製を回避するために、支援方法(以下を参照)を使用してテストを抽象化したいと思います。

private void Testfoobar(Action setProperty)
{
    bool assemblyLoaded = false;
    loader.AssemblyLoaded += (sender, args) => assemblyLoaded = true;
    setProperty();
}

残念ながら、プロパティの割り当てをアクションにすることはできません。

では、どういうわけか、割り当てをアクションに「変換」できるでしょうか。それとも、コードを抽象化する別の方法がありますか?

4

1 に答える 1

2

プロパティの割り当てをアクションにできないというのは、どういう意味ですか?
割り当てを実際に実装できないということですか?
使えない理由

Action<loader> action =(loader)=>loader.Type="someType";

デリゲートでやりたい場合は、 Funct<> デリゲートを使用できます。

Func<string> funct = ()=>"someType";
于 2012-05-30T16:22:59.873 に答える