2017-10-11 8 views
1

난 그냥과 같이 JSON으로 매우 간단한 익명의 개체를 반환하는 것을 시도하고있다 "객체 X에 대한 정의를 포함하지 않는 '제공 이 ID = 1은구문 분석 동적 jsonResult 응답은

[TestMethod] 
    public void TestMethod4() 
    { 
     var controller = new ValuesController(); 
     dynamic result = controller.GetJson(); 

     Assert.AreEqual(1, result.Value.id); 
    } 

는 이러한 결과 :

메시지 : 시험 법은UnitTestProject1.UnitTest1.TestMethod4 던져예외 : Microsoft.CSharp.RuntimeBinder.RuntimeBinderException :

Image from VS

답변

2

귀하의 방법은 개체 인 속성 Data를 포함하는 JsonResult을 반환 '객체' 'ID'에 대한 정의를 포함하지 않는, 그래서 당신의 코드는

[TestMethod] 
public void TestMethod4() 
{ 
    var controller = new ValuesController(); 
    dynamic result = controller.GetJson().Data; // returns { id = 1, child = new { id = 12, name = "woop woop" } } 
    Assert.AreEqual(1, result.id); 
} 

그러나 익명의 객체가 internal 그래서 당신은 또한 테스트 프로젝트에 개체 볼 수 있도록 할 필요가 있습니다해야합니다. ValuesController 클래스를 포함하는 프로젝트의 AssemblyInfo.cs 파일에

[assembly: InternalsVisibleTo("YourProjectName.UnitTestProject1")] 
+0

좋은 대답을 추가하십시오. 다른 사람들에게도 도움이 될 것입니다. –

+0

GetJson()에는 .Data가 없으므로 .Value가 있습니다. AssemblyInfo.cs 파일이 없습니다. .Net Core 1.1 프로젝트입니다. – ganjan

+0

그런 다음 질문에 올바르게 태그를 답니다. –