2

すべての素晴らしいストーリーは、常にこの 4 つの魔法の言葉から始まります... システムを継承しました... 待って!それは違います!

とにかく、私のユーモアの試みは終わったので、既存のサービスをサポートしなければならないことはあまりありません。

このサービスの使用に関しては、多くの問題があります。たとえば、個人のレコードを作成する場合、サービスの 4 つの異なる部分を呼び出す必要があります。

そのため、マネージャーと協力して、新しいサイトを作成するときに、数と正しい順序を単純化するために、一般的な要求にファサードを追加するために、別のレイヤーを上に貼り付ける必要があると判断しました。

誰かが上記のワッフルを避けたい場合、私の質問はここから始まります

そのため、現在行っている作業で TDD を使用したいと考えていますが、継承したサービス (データ層になります) は、Web.Config の特定の接続文字列ノードにあるデータベース接続文字列と強く結合されています。

私が抱えている問題は、サービスを構成ファイルから切り離すには、私が持っていない数週間の時間がかかることです。

そのため、予想されるノードを含む App.Config ファイルを Test プロジェクトに追加する必要がありました。

これを行っても問題ありませんか、それともデータベース構成をデータレイヤーから分離するために時間を費やす必要がありますか?

4

4 に答える 4

1

DependancyInjectionを使用してDataLayerをモックアップしてみてください。

TDDでは、(必然的に)データレイヤーとデータベースをテストするのではなく、ビジネスロジックをテストします。

いくつかのリンク:

于 2010-06-18T14:11:34.510 に答える
1

あなたが言ったように、依存性注入は行く方法です。また、構成オブジェクトのコンシューマーが、ConfigurationManager、ConfigurationSectionsなどの特定の構成実装に依存していないことを確認する必要があります。カスタム構成を使用した完全な例を確認するには、構成の無視に関するブログ投稿を参照してください。しかし、基本的にはで構成されています。

ConfigurationSectionまたはXmlReaderを使用する構成の実装は、プロパティを簡単にモックアウトし、後日実装を簡単に変更できるインターフェイスに基づいている必要があります。

public BasicConfigurationSection : ConfigurationSection, IBasicConfiguration
{
    ...
}

構成の再試行方法に取り組むために、構成プロバイダーを使用します。特定の構成の構成プロバイダーは、その構成を取得する方法を知っています。

public interface IConfigurationProvider<TConfiguration>
{
    TConfiguration GetConfiguration();
}

public class BasicConfigurationProvider : IConfigurationProvider<IBasicConfiguration>
{
    public IBasicConfiguration GetConfiguration()
    {
        return (BasicConfigurationSection)ConfigurationManager.GetSection("Our/Xml/Structure/BasicConfiguration");
    }
}

Windsorを使用している場合は、これをWindsorの工場施設に配線できます。

お役に立てば幸いです。

于 2010-06-28T14:05:59.933 に答える
1

アプリを構成から切り離すためのコードを処理する際に、依存性注入の使用を検討する必要があることに同意しますが、それを行うのは簡単な作業ではないことも理解しています。

したがって、質問に直接答えるには、いいえ、テストをサポートするための構成ファイルを追加しても問題はありません。これは実際には、レガシーシステムをユニットテストする場合に非常に一般的です(レガシーはテストされていないシステムです)。また、他のオプションがない場合は、リフレクションを利用して、構成値を読み取るコードをテストするために、偽の構成値をConfigurationManagerに「注入」することにしましたが、これはおそらく最後の手段です。

于 2010-06-19T02:11:56.710 に答える
1

依存性注入を使用して、コードを web.config (または app.config ) から「切り離す」ことができます。

http://weblogs.asp.net/psteele/archive/2009/11/23/use-dependency-injection-to-simplify-application-settings.aspx

于 2010-06-18T14:16:51.790 に答える