2013-07-20 5 views
3

Вот мой метод контроллера:Как проверить JsonResult из .NET MVC контроллера

[AuthorizeUser] 
    [HttpPost] 
    [ValidateJsonAntiForgeryToken] 
    public ActionResult EventDetails(int eventId) 
    { 
     string details = this._eventDataProvider.GetById(eventId).Comments; 

     if (string.IsNullOrEmpty(details)) 
      details = "This location has not entered any comments or further details for this event."; 

     return Json(new 
     { 
      details = details 
     }); 
    } 

А вот мой тест .. интересно, что мне нужно сделать, чтобы проверить JSon возвращается из контроллера. спасибо:

[TestMethod] 
    public void DetailsAreReturned() 
    { 
     // Arrange 
     eventsController = new EventsController(eventDataProvider.Object, playerEventDataProvider.Object, userDataProvider.Object, 
               tokenAuthent.Object, dataContext.Object, customerLocationDataProvider.Object); 

     eventDataProvider.Setup(x => x.GetById(1)).Returns(new Event() { Comments = "test" }); 

     // Act 
     JsonResult result = (JsonResult) eventsController.EventDetails(1); 

     // Assert 
     Assert.IsNotNull(result.Data); 

     Assert.AreEqual(??, result); 
    } 

ответ

5

Я должен дать кредит на этот пост первого: How do I iterate over the properties of an anonymous object in C#?

var result = new JsonResult{ Data = new {details = "This location has not entered any comments or further details for this event."}}; 

var det = result.Data.GetType().GetProperty("details", BindingFlags.Instance | BindingFlags.Public); 

var dataVal = det.GetValue(result.Data, null); 

Надеется, что это помогает или, по крайней мере, дает вам точку прыжка.

Смежные вопросы