モデル同士の値を比較する共通メソッドをつくった。
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++; } }