Un método de acción en mi aplicación ASP.NET MVC2 devuelve un objeto JsonResult y en mi prueba de unidad me gustaría comprobar que el objeto JSON devuelto realmente contiene los valores esperados.palabra clave "dinámica" y datos JSON
yo probamos este:
1. dynamic json = ((JsonResult)myActionResult).Data;
2. Assert.AreEqual(JsonMessagesHelper.ErrorLevel.ERROR.ToString(), json.ErrorLevel);
pero me da un RuntimeBinderException " 'objeto' no contiene una definición para 'ErrorLevel'".
Sin embargo, cuando coloco un punto de interrupción en la línea 2 e inspeccionar la variable dinámica JSON (ver foto abajo), es obvio que no contienen la cadena ErrorLevel y tiene el valor esperado, por lo que si el ligante no era tiempo de ejecución jugando divertido la prueba pasaría.
Lo que no recibo? ¿Qué estoy haciendo mal y cómo puedo solucionarlo? ¿Cómo puedo hacer que la afirmación pase?
it * is * working. Y aprecio cómo funciona, pero aún parece bastante pirata. Muy contra-intuitivo usar RouteValueDictionary para consultar los contenidos de un objeto anónimo ... Solo puedo recordar esta solución, ya que no creo que haya llegado a esto por mi cuenta. ¿No hay una clase diferente que haría el mismo truco con los objetos anónimos, algo que no está oculto en System.Web.dll? (Extraño, esto vive en System.Web.Routing namespace, pero NO en System.Web.Routing.dll) –