1


2

私は(jsonresultにある)匿名変数の返されたリストが正しいかどうかをチェックするmvc Webアプリケーションのためのユニットテストを書いています。 したがって、そのリストを反復処理する必要がありますが、その方法が見つからないようです。

だから私は2つの方法があります

1)jsonの結果を返します。 そのjsonの結果にはdataというプロパティがあります。 そのプロパティはオブジェクト型ですが、内部的には無名変数のリストです。

2)メソッドはメソッド1を呼び出し、返されたjsonresultが問題ないかどうかを確認します。

テストを実行してデバッガを中断した場合、結果の上にマウスを移動してその中の項目を確認できます。 私はただコードでそうする方法を見つけません(ちょうどforeachを使うことは私がそれを必要とする時点で私は無名メソッドを作成したメソッドではないので不可能です)

3 Answer


1


私はあなたが「匿名型変数」と言ったところではどこでも「匿名型」を意味すると思います - しかし、あなたはまだ型変数として宣言変数を宣言するだけで `foreach`でリストを繰り返すことができます:

foreach (object o in myList)
{
    // Not sure what you're actually trying to do in here...
}

内容を確認する必要がある場合は、匿名型がToStringをオーバーライドするという便利な方法で使用できます。 あなたのテストは各要素を文字列に射影した結果をチェックすることができます。 実際、結果オブジェクトを一連の文字列に簡単に変換できます。

var strings = ((IEnumerable) result).Cast.Select(x => x.ToString());

それからhttp://msdn.microsoft.com/en-us/library/system.linq.enumerable.sequenceequal.aspx [SequenceEqual]を使って` strings`をテストしてください。


0


あなたが期待するものと同じオブジェクトのセットを作成し、それからそれと結果の両方を直列化します。単体テストの下でのアクションのデータ。 最後に、ストリームを比較して、それらが同一かどうかを確認します。


0


わかりました私はそれをIEnumerableに変換することができますそれから私は結果を繰り返すことができます。 THX!

var objects =((IEnumerable)result.Data); foreach(オブジェクト内のオブジェクトobj){//そこからプロパティを取り出すためにリフレクションを使うことができる