Nic*_*k B 3 c# asp.net-mvc unit-testing moq
正在测试的控制器操作:
[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
});
}
Run Code Online (Sandbox Code Playgroud)
控制器的测试代码:想知道我需要做些什么来测试从控制器返回的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);
}
Run Code Online (Sandbox Code Playgroud)
我必须首先赞扬这篇文章:如何在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);
Run Code Online (Sandbox Code Playgroud)
希望这有助于或至少为您提供一个跳跃点.
| 归档时间: |
|
| 查看次数: |
2973 次 |
| 最近记录: |