Итак, у меня есть контроллер, который возвращает json в мои представления, которые мне нужно проверить. Я попытался использовать отражение с динамическим типом данных, чтобы получить доступ к вспомогательному свойству списка, но я все-таки получаю нечто похожее на ошибки «неспособности». В основном у меня есть список в списке, который я хочу получить и проверить, но я не могу получить к нему доступ. Кто-нибудь тестировал json, возвращенный со своего контроллера, прежде чем в MVC4 и получил совет?Тестирование результатов JSON от контроллера MVC 4 C#
Код:
// arrange
var repositoryMock = new Mock<IEdwConsoleRepository>();
var date = -1;
var fromDate = DateTime.Today.AddDays(date);
EtlTableHistory[] tableHistories =
{
new EtlTableHistory
{
Table = new Table(),
RelatedStatus = new BatchStatus(),
BatchId = 1
}
};
EtlBatchHistory[] batchHistories = { new EtlBatchHistory
{
Status = new BatchStatus(),
TableHistories = tableHistories
} };
repositoryMock.Setup(repository => repository.GetBatchHistories(fromDate)).Returns((IEnumerable<EtlBatchHistory>)batchHistories);
var controller = new EdwController(new Mock<IEdwSecurityService>().Object, repositoryMock.Object);
// act
ActionResult result = controller.BatchHistories(1);
// assert
Assert.IsInstanceOfType(result, typeof(JsonResult), "Result type was incorrect");
var jsonResult = (JsonResult)result;
var resultData = (dynamic)jsonResult.Data;
var returnedHistories = resultData.GetType().GetProperty("batchHistories").GetValue(resultData, null);
var returnedTableHistoriesType = returnedHistories.GetType();
Assert.AreEqual(1, returnedTableHistoriesType.GetProperty("Count").GetValue(returnedHistories, null), "Wrong number of logs in result data");
Я хочу получить свойство «TableHistories» из объекта EtlBatchHistory внутри batchHistories. – noname
Как выглядит ваш JSON и/или какой код его производит? И вы должны просто использовать 'var returnHistories = resultData.batchHistories;', без рефлексии (для этого используется 'dynamic'). (тот же для свойства 'Count') –
Json выглядит так:« {batchHistories = System.Collections.Generic.List'1 [<> f__AnonymousType1'11 [System.Int32, System.String, System.String, System.String, System.Int32, System.Nullable'1 [System.Int64], System.Nullable'1 [System.Int32], System.String, System.String, System.String, System.Collections.Generic.List'1 [<> f__AnonymousType0'9 [System.String, System.String, System.Int32, System.Int32, System.String, System.String, System.String, System.String, System.String]]]]} " – noname