3

一連の単体テスト (既存のレガシー コンポーネント用) を作成しているときに、エラー コードのリスト (モックしたサービスによって返される) と、対応するエラー メッセージのリスト (これは私のテスト対象のコンポーネントが返されます)。

a を使用することList<Tuple<string, string>>は、この関連付けを定義するための優れた簡単な方法のようです。

var errorCodesAndMessages = new List<Tuple<string, string>>
{
    Tuple.Create("CODE1", "Error message 1"),
    Tuple.Create("CODE2", "Error message 2")
    // etc...
};

単体テストでは、 をループして、模擬errorCodesAndMessagesサービスを設定してn 番目のエラー コードを返し、テスト対象のコンポーネントがn 番目のエラー メッセージを返すことをアサートします。

これは良い使い方ですか、それとも - の悪用Tuple<>ですか?

編集

Dictionary<string, string>回答は、このシナリオではより良いことを示唆しています。私は同意しなければなりません。しかし、(何らかの理由で) 3 つのデータを関連付ける必要があるとしたらどうでしょう (エラー コード、ユーザーが表示するエラー メッセージ、技術的なエラー メッセージなど)。

これは の良い使い方Tuple<>でしょうか?

Tuple.Create("CODE1", "User error message", "Technical error message")
4

2 に答える 2

4

Tuple は引き続き機能しますが、エラー コードの詳細を追跡したい場合は、エラー コードの詳細を構成する単純なクラスを作成し、引き続き辞書を使用して保持すると、コードがより読みやすく、保守しやすくなると思います。エラーコードキーを追跡します。

Dictionary<string, ErrorCodeDetails>
于 2012-04-23T13:24:03.320 に答える
4

Dictionary<string, string>エラーコードが重複しないと仮定するのはかなり安全なので、それを処理するより良い方法だと思われます。Dictionaryまた、キーの一定時間のルックアップという利点もあります。

var errorCodesAndMessages = new Dictionary<string, string>()
{
    { "CODE1", "Error message 1" },
    { "CODE2", "Error message 2" },
    // etc...
};

コードも短いです。

于 2012-04-23T13:25:28.480 に答える