びぼーろくっ!

誰かに見せるわけでもないけど、備忘録として。。

モデル同士の値を比較する共通メソッドをつくった。

C#やっぱしんどいです。
今オブジェクトの比較事態はJSON文字列に変換して行っているのですが、Nunitの仕様上擦り切れてしまうんですよね。。
コンソール画面で色つきで表示されたら不正な値が見れるからいいのになー。と思ってて探してみたけど無かったので作りました。

結構無理やりな勢いで作ったので普通にバグるかもしれません。。使用するのは自己責任で・・・
JavaScriptなら簡単にいけちゃうのにな。。。やっぱC#しんどry
実際にモデルの比較ならJSONに変換したほうがイケてると思います。今回は細かい検証用なので使い道が少ないかも。。

    public void AssertResultConsoleView<T>(T modelA, T modelB)
    {
        var propsA = modelA.GetType().GetProperties();
        var propsB = modelB.GetType().GetProperties();

        var i = 0;
        foreach (var prop in propsA)
        {
            Console.ResetColor();
            var propB = propsB[i];
            if (prop.Name == propB.Name)
            {
                var aValue = prop.GetValue(modelA).ToString();
                var bValue = propB.GetValue(modelB).ToString();

                if (aValue != bValue)
                {
                    Console.BackgroundColor = ConsoleColor.Red;
                }
                Console.WriteLine("比較結果:{0}: exp:{1} result:{2}", prop.Name, aValue, bValue);
            }
            i++;
        }
    }