Error al ejecutar la prueba, si usa el método de extensión CreateResponse para devolver la función de Azure HttpResonseMessage
Mi código de función de Azure es el siguiente
public static class MyHttpTriggerFunction
{
public static async Task<HttpResponseMessage> Run([HttpTrigger(AuthorizationLevel.Function, "get", "post", Route = null)]HttpRequestMessage req, TraceWriter log)
{
// some business logic
if (valid)
{
return req.CreateResponse(HttpStatusCode.OK, true);
}
else
{
return req.CreateResponse(HttpStatusCode.BadRequest, "some error message");
}
}
}
En mi proyecto de prueba, estoy leyendo el resultado como a continuación:
var result = await MyHttpTriggerFunction.Run(req, log).ConfigureAwait(false);
Después de ejecutar la función, cuando intenta devolver la respuesta en la variable de resultado, el método de prueba falla con excepción.
** **
System.InvalidOperationException: la solicitud no tiene un objeto de configuración asociado o la configuración proporcionada era nula.
** **
Me he asegurado de que el proyecto de prueba tenga el mismoSystem.Net.Http.HttpRequestMessageExtension
dll.
Si cambio el código de función para no usarCreateResponse
método de extensión (este método de extensión es del código de la plantilla VS 2017) y devuelve la respuesta como se muestra a continuación, obtengo la respuesta en el método de prueba y el caso de prueba funciona bien.
var res = new HttpResponseMessage();
if (valid)
{
res.StatusCode = HttpStatusCode.OK;
res.Content = new ObjectContent<bool>(true, new JsonMediaTypeFormatter());
return res;
}
else
{
res.StatusCode = HttpStatusCode.BadRequest;
res.Content = new ObjectContent<string>("some error message", new JsonMediaTypeFormatter());
return res;
}
Debajo está el stacktrace of error
Resultado StackTrace: en System.Net.Http.HttpRequestMessageExtensions.CreateResponse [T] (solicitud HttpRequestMessage, HttpStatusCode statusCode, T value, HttpConfiguration configuration) en System.Net.Http.HttpRequestMessageExtensions.CreateRessagesec. valor) en MyFunctionApp.MyHttpTriggerFunction.d__1.MoveNext () --- Fin del seguimiento de la pila desde la ubicación anterior donde se produjo la excepción --- en System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess (Tarea de tarea) en System.Runtime.CompilerServices. TaskAwaiter.HandleNonSuccessAndDebuggerNotification (tarea de tareas) en System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1.ConfiguredTaskAwaiter.GetResult () en MyFunctionAppUnitTest.MyHttpTriggerFunctionTest.d__2.MoveNext () en C: \ Users \ rsingh \ Desktop \ Git_Workspace \ ActivationAPI \ MyFunctionAppUnitTest \ MyHttpTriggerFunctionTest .cs: línea 53 --- Fin del seguimiento de la pila desde la ubicación anterior donde se produjo la excepción --- en System.Runtime.CompilerSe .la. MyHttpTriggerFunction_SuccessResult produjo una excepción: System.InvalidOperationException: la solicitud no tiene un objeto de configuración asociado o la configuración proporcionada era nula.
¿Me estoy perdiendo algo trivial?