1

私のテストでは、タイプの結果があり、そのプロパティが正しいオブジェクトに設定されHttpRequestMessageていることをアサートする必要があります。Content

問題は、HttpRequestMessage.Content比較したいオブジェクトとは異なる (ベース) タイプを持ち、次のように ShouldBeEquivalentTo と Inclusive を使用できないことです。

HttpRequestMessage result = ...

result.Content.ShouldBeEquivalentTo (new ObjectContent (obj.GetType (), obj, new JsonMediaTypeFormatter ()),
                                     options => options.Including (x => x.Value));

HttpContentオプションは Content プロパティ タイプ ( )で機能し、 では機能しないため、これはコンパイルされませんObjectContent

私が見つけた唯一の方法は、次のような2つのアサーションを持つことです:

result.Should ().BeOfType<ObjectContent> ();

((ObjectContent) result.Content).ShouldBeEquivalentTo (new ObjectContent (obj.GetType (), obj, new JsonMediaTypeFormatter ()),
                                                        options => options.Including (x => x.Value));

それを行うより良い方法はありますか?おそらくBeOfType、ベースのアサーションではなく、キャストされたオブジェクトの流暢なアサーションを返すものでしょうか?

4

1 に答える 1

1

より簡単な方法はわかりませんが、複数の場所で醜いコードを回避しようとしている場合は、拡張メソッドがうまく機能する可能性があります。

次のようなものです(これがそのままコンパイルされるかどうかはわかりません):

public static class ShouldBeHelper
{
    public static void ShouldBeSameContent(this HttpRequestMessage result, object expected)
    {
        result.Should().BeOfType<ObjectContent>();

        ((ObjectContent)result.Content).ShouldBeEquivalentTo(new ObjectContent(expected.GetType(), expected, new JsonMediaTypeFormatter(),
            options => options.Including(x => x.Value));
    }
}
于 2014-01-28T14:16:12.063 に答える