【VB.NET】 空のIEnumerable(Of T) 他
仕事での開発中にプロダクトのコードの読めないところや実装の手段に困ったときなどに調べたことなどをストアしています。 ある程度量が貯まってきたら定期的に放出していこうと思います。
VB.NET,Angular,TypeScriptといったものがターゲットになることが多いです。
空のIEnumerable(Of T)の生成
Enumerable.Empty(TResult) メソッド (System.Linq)
' Create an empty sequence. Dim empty As IEnumerable(Of Decimal) = Enumerable.Empty(Of Decimal)()
空の検証
Enumerable.Any(TSource) メソッド (IEnumerable(TSource)) (System.Linq)
Enumerable.Count(TSource) メソッド (IEnumerable(TSource)) (System.Linq)
これらを使えば良いでしょうか。
NUnit(Assert.That)で検証したかったので、
' Is hoge empty? Assert.That(hoge, [Is].Empty)
でよさそうです。
Object同士の比較検証
DBからのデータを取得するクエリの結果をマッピングしたオブジェクトの検証(そのオブジェクトを取得/返却するFunctionの検証)。
=演算子やIs演算子、Equalsメソッドだと別インスタンスはfalseになるので
Dim result As hogeClass = get() Dim expected As hogeClass = ~ Assert.That(result.property1, [Is].EqualTo(expected.property1)) Assert.That(result.property2, [Is].EqualTo(expected.property2)) ...
プロパティ(カラム)が少なければこれでよさそう。
プロパティ多い場合これだとしんどくなります。演算子のオーバーロードやEqualsメソッドを用意するのも手間だったので、オブジェクトをそれぞれJsonにシリアル化して文字列の値として比較しました。
Imports Newtonsoft.Json Assert.That(JsonConvert.SerializeObject(result), [Is].EqualTo(JsonConvert.SerializeObject(expected)))
これはtrueになります。
Null許容型
Dim hoge As Integer? = Nothing
ヽ(~~~ )ノ ハテ?
文字列補完(変数埋め込み)
Dim x = 10 $"{x}人" ' 10人
ヽ(~~~ )ノ ハテ?