【发布时间】:2017-11-10 20:21:31
【问题描述】:
我的 Azure Function 代码如下所示
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");
}
}
}
在我的测试项目中,我正在阅读如下结果:
var result = await MyHttpTriggerFunction.Run(req, log).ConfigureAwait(false);
执行该函数后,当它尝试在结果变量中返回响应时,测试方法失败并出现异常。
**
System.InvalidOperationException:请求没有 关联的配置对象或提供的配置是 空。
**
我已确保测试项目具有相同的System.Net.Http.HttpRequestMessageExtension dll。
如果我更改功能代码不使用CreateResponse扩展方法(此扩展方法来自VS 2017模板的代码)
并返回如下响应,我在测试方法中得到响应并且测试用例运行良好。
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;
}
下面是错误的stacktrace
结果堆栈跟踪:在 System.Net.Http.HttpRequestMessageExtensions.CreateResponse[T](HttpRequestMessage 请求、HttpStatusCode statusCode、T 值、HttpConfiguration 配置)在 System.Net.Http.HttpRequestMessageExtensions.CreateResponse[T](HttpRequestMessage 请求,HttpStatusCode statusCode,T 值)在 MyFunctionApp.MyHttpTriggerFunction.d__1.MoveNext() --- 从先前抛出异常的位置结束堆栈跟踪 --- 在 System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任务 任务)在 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务 任务)在 System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1.ConfiguredTaskAwaiter.GetResult() 在 MyFunctionAppUnitTest.MyHttpTriggerFunctionTest.d__2.MoveNext() 在 C:\Users\rsingh\Desktop\Git_Workspace\ActivationAPI\MyFunctionAppUnitTest\MyHttpTriggerFunctionTest.cs:line 53 --- 从先前抛出异常的位置结束堆栈跟踪 --- 在 System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任务 任务)在 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务 任务)在 Microsoft.VisualStudio.TestPlatform.MSTestAdapter.PlatformServices.ThreadOperations.ExecuteWithAbortSafety(操作 操作)结果消息:测试方法 MyFunctionAppUnitTest.MyHttpTriggerFunctionTest.MyHttpTriggerFunction_SuccessResult 抛出异常:System.InvalidOperationException:请求确实 没有关联的配置对象或提供的 配置为空。
我错过了什么琐碎的事情
【问题讨论】:
标签: c# unit-testing azure visual-studio-2017 azure-functions