ASP.NET MVC2アプリケーションのアクションメソッドはJsonResultオブジェクトを返します。ユニットテストでは、返されたJSONオブジェクトに実際に期待値が含まれていることを確認したいと思います。"dynamic"キーワードとJSONデータ
私はこの試みた:
1. dynamic json = ((JsonResult)myActionResult).Data;
2. Assert.AreEqual(JsonMessagesHelper.ErrorLevel.ERROR.ToString(), json.ErrorLevel);
をしかし、私はRuntimeBinderException「『オブジェクト』が 『エラーレベル』の定義が含まれていません」を取得。
私は(下の写真参照)2行目にブレークポイントを配置し、JSON動的変数を検査する場合しかし、それは明らかには、エラーレベルの文字列が含まれず、それが期待値を持っているので、実行時のバインダーがなかった場合テストが合格するという面白い演奏。
私は何を得ていないのですか?私は間違って何をしていますか?これをどのように修正できますか?アサーションをパスするにはどうしたらいいですか?
※※動作しています。そして、私はそれがどのように機能するのか気に入っていますが、まだかなりハックのようです。匿名オブジェクトの内容を照会するのにRouteValueDictionaryを使用するのは非常に直感的です...私は自分でこれを思いついたとは思わないので、この解決策を覚えておきたいと思います。匿名のオブジェクト(System.Web.dllに隠されていないもの)で同じトリックを行う別のクラスはありませんか? (これはSystem.Web.Routing名前空間に存在しますが、System.Web.Routing.dllには存在しません) –