Я пытаюсь провести юнит-тестирование моего метода. Но в процессе мне пришлось десериализовать следующий объект. У объекта есть много других свойств, которые являются сложными типами, но для моего требования следующее заключается в том, как я инициализирую свойства.
List<ClueResponse> clueResponses = new List<ClueResponse>
{
new ClueResponse
{
ReportInfo=new ThirdPartyReportInfo
{
ReportRequestDtTm = DateTime.Today,
ReportReceivedDtTm = DateTime.Today,
ReportReferenceNumber = "12345"
},
State="IN"
}
};
Этот объект устанавливается в Содержимое HttpResponse и после этого он десериализуется.
HttpResponseMessage response = new HttpResponseMessage
{
Content = new ObjectContent<List<ClueResponse>>(clueResponses,new JsonMediaTypeFormatter())
};
_mockedBaseApiClient.Setup(m => m.GetAsync("PolicyApi", It.IsAny<string>()))
.ReturnsAsync(response);
Десериализация - это метод расширения HttpResponseMessage как
public static async Task<TResult> Deserialize<TResult>(this HttpResponseMessage response)
{
try
{
using (Stream stream = await response.Content.ReadAsStreamAsync())
using (StreamReader streamReader = new StreamReader(stream))
using (JsonReader textReader = new JsonTextReader(streamReader))
{
JsonSerializer serializer = new JsonSerializer
{
NullValueHandling = NullValueHandling.Ignore,
MissingMemberHandling = MissingMemberHandling.Ignore,
};
return serializer.Deserialize<TResult>(textReader);
}
}
catch (Exception ex)
{
ex.Data.Add("StatusCode", response.StatusCode);
ex.Data.Add("ReasonPhrase", response.ReasonPhrase);
throw new SerializationException("Failed to deserialize", ex);
}
}
Но после десериализации я не могу правильно десериализовать объект. Я получаю все нулевые значения для всех свойств, даже для ReportInfo
var clueResponses= await clueResponseMessage.Deserialize<List<ClueResponse>>();
Содержимое десериализуется в Список, но каждый объект Clue имеет все свойства null.