JSONを匿名型として返すコントローラをテストするユニットテストを書く必要があります。私がそれにルートノードを追加する必要があるため、これは匿名で匿名型のユニットテスト - JSON
唯一の理由はあるので、コントローラからのリターンは次のようになります。これは、「ユーザーとJSONへのルートノードを追加します
return Json(new { User = person });
"、続いてPerson
オブジェクトがJSONにシリアル化されています。
これは問題なく動作しますが、私の問題は単体テストにあります。
このような匿名型をテストする唯一の解決策は、まずAssemblyInfo.csでInternalsVisibleTo
を使用してテストプロジェクトを表示し、次にdynamic
を使用して結果を取得することです。
dynamic results = userController.GetPerson(1);
dynamic content = results.Content;
これはobject
はContentプロパティを持っていないと言って、二行目で失敗します。ただし、デバッガの下には、Contentプロパティが表示されます。
これをテストするにはどうすればいいですか?
results.Contentが有効です。私はVisual Studioデバッガでそれを見ることができ、有効なオブジェクトが含まれており、プロパティが設定されています。なぜここで 'dynamic'オブジェクトを扱っているときに' object'に 'Content'プロパティが含まれていないと主張しているのか理解できませんが、Visual Studioデバッガのオブジェクトを見て、内容 '、それはすべて有効です。 – Patrick
GetPersonを呼び出す前に、ダイナミックオブジェクトをインスタンス化することができます。 http://stackoverflow.com/questions/2630370/c-sharp-dynamic-cannot-access-properties-from-anonymous-types-declared-in - ノー –