かずきのBlog@hatena

すきな言語は C# + XAML の組み合わせ。Azure Functions も好き。最近は Go 言語勉強中。日本マイクロソフトで働いていますが、ここに書いていることは個人的なメモなので会社の公式見解ではありません。

ChainingAssertion使ってみた

id:neueccさんのライブラリに依存している今日この頃です。ChainingAssertionにも手を出してみました。このライブラリはnugetでさくっと入れれる所もいいのですが、なんとdllではなくソースコード形式で提供されているんですよね!!nugetで登録したらChainingAssertionという名前のソースファイルがぽこっと追加されます。なので、このコードを見ながら拡張したいな〜って思ったところは、id:neuecc先生のコードをお手本にさくっと作ることができるということですよ。dllとかだとライブラリを追加するのが敷居高いというのでもコードでの再利用なら敷居低いところもあるかも??ないかも??

とまぁ、ChainingAssertionを使ってて感じた不満点はIsNullとIsNotNullにメッセージを渡せないところ。無いなら作ってしまえばいいじゃない?ということで下記のようにコードを書き換えて使ってます。お手軽修正できていい感じ。

// オリジナル
/// <summary>Assert.IsNull</summary>
public static void IsNull<T>(this T value)
{
    Assert.IsNull(value);
}

/// <summary>Assert.IsNotNull</summary>
public static void IsNotNull<T>(this T value)
{
    Assert.IsNotNull(value);
}

// 修正後
/// <summary>Assert.IsNull</summary>
public static void IsNull<T>(this T value, string message = "")
{
    Assert.IsNull(value, message);
}

/// <summary>Assert.IsNotNull</summary>
public static void IsNotNull<T>(this T value, string message = "")
{
    Assert.IsNotNull(value, message);
}

これでテストコード内に以下のように書けるって寸法です

var actual = default(string);
actual = foo.Hogehoge();
actual.IsNull("actual is null");

id:neueccさんの書くライブラリってよく考えて作られててコードもシンプルで可読性も高くて程よく変態的な部分もあると思います。リーディングにお勧めです。