miso_soup3 Blog

主に ASP.NET 関連について書いています。

JsonResult の Data をテストする時にエラー

Controllerのアクションメソッドにて、
JsonResultのDataを匿名型オブジェクトで設定した時の、
戻り値のテスト方法です。
ある条件下でエラーがでるので、その対処方法を書きます。

アクションメソッド内の実装

return Json(new { pesronName = "山田さん", Message = "やっほー" });

テスト

JsonResult jsonResult = controller.GetPerson();
dynamic data = jsonResult.Data;

//assert
Assert.AreEqual("山田さん", data.userName);
Assert.AreEqual("やっほー", data.Message);

エラー

テストプロジェクトとControllerのプロジェクトが別になっていると、
こんなエラーがでるかもしれません。

対象方法

ControllerのあるプロジェクトのAssemblyInfo.csに、

[assembly: InternalsVisibleTo("TestProject.Controllers.Test")]

この一行を追加します。
中の文字列は、テストプロジェクトのアセンブリ名を書きます。

これで先ほどのエラーはでなくなり、正しくテストできます。