Stavo provando a testare un metodo in uno dei miei controllori restituendo un JsonResult. Con mia grande sorpresa il seguente codice non ha funzionato:Asserzione di JsonResult contenente il tipo anonimo
[HttpPost]
public JsonResult Test() {
return Json(new {Id = 123});
}
Ecco come ho provarlo (si noti, inoltre, che il codice di prova risiede in un altro assembly):
// Act
dynamic jsonResult = testController.Test().Data;
// Assert
Assert.AreEqual(123, jsonResult.Id);
Il Assert
genera un'eccezione:
'oggetto' non contiene una definizione per 'Id'
allora ho risolto esso utilizzando il seguente:
[HttpPost]
public JsonResult Test() {
dynamic data = new ExpandoObject();
data.Id = 123;
return Json(data);
}
sto cercando di capire il motivo per cui non è il primo lavoro? Sembra anche che funzioni fondamentalmente con MA un tipo anonimo.
Ho provato il codice con il tipo anonimo e ha funzionato bene per me. Non sono sicuro del motivo per cui hai ricevuto quell'errore. –
Cosa ottieni quando si stampa 'jsonResult.GetType()'? (l'errore indica che è di tipo 'object' piuttosto che di tipo' <> f__AnonymousType0', che è quello che mi aspetterei) –
Il tipo è effettivamente oggetto. Mi aspettavo che funzionasse da solo, non sono sicuro del motivo per cui ottengo quei risultati. –