2016-09-26 1 views
0

Использование MSTest, когда я пытаюсь запустить тест с типом динамических данных, который является контейнером объекта JSON (из запроса API) I чтобы иметь возможность разыгрывать элементы JSON в комментариях ниже, но это не удается, поскольку, рассматривая его как коллекцию элементов, кажется, что это нормально. Если «проверка» (jsonResponse.message) «имеет значение« Привет », но он не будет работать в модульном тесте. Почему?Тестирование модуля Как я могу десериализовать объект JSON в динамическом объекте с помощью json-net

// http://www.newtonsoft.com/json/help/html/LINQtoJSON.htm // Deserialize json object into dynamic object using Json.net

[TestMethod] 
public void DynamicDeserialization() 
{ 
    dynamic jsonResponse = JsonConvert.DeserializeObject("{\"message\":\"Hi\"}"); 
    JObject d = JObject.Parse("{\"message\":\"Hi\"}"); 
    Assert.IsTrue((string)d["message"] == "Hi");   // Is ok 
// Assert.IsTrue(jsonResponse.message.ToString() == "Hi"); // is not ok 
}  
+1

Определение «не будет работать» - вы получаете исключение? Если да, то что говорит сообщение об исключении? Если нет, то какое поведение вы наблюдаете и как это отличается от того, что вы ожидали? –

+0

Некомментированная последняя строка, запуск кода и проверка работы/передачи. В чем проблема. если вы посмотрите на 'jsonResponse' во время отладки, вы увидите, что это' JObject', также завернутый как 'dynamic'. – Nkosi

ответ

0

незакомментированной последняя строка, запускали код и тест работал/пройдена. Если вы посмотрите на jsonResponse во время отладки, вы увидите, что это JObject, а также завернутый как dynamic.

На самом деле, если я конвертирую d в dynamic, я могу выполнить одно и то же утверждение и передать его.

[TestMethod] 
public void DynamicDeserialization() { 
    var json = "{\"message\":\"Hi\"}"; 
    dynamic jsonResponse = JsonConvert.DeserializeObject(json); 
    dynamic d = JObject.Parse(json); 
    Assert.IsTrue(d.message.ToString() == "Hi"); 
    Assert.IsTrue(jsonResponse.message.ToString() == "Hi"); 
} 

Вам может понадобиться, чтобы проверить, чтобы убедиться, что вы используете последнюю версию Json.NET

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