上一篇介绍了使用使用 Visual Studio 开发 "Azure Functions" 函数,此篇介绍 “Azure Functions” 的测试以及直接从 Vistual Studio 在 Azure 上的部署 ”Azure Functions“应用。html
单元测试是敏捷方法的基本部分。 Visual Studio 提供测试项目模板。 使用此模板为应用程序建立单元测试,可将相同的技术应用于 Azure Functions 测试。git
(1)在 Visual Studio 的“解决方案资源管理器”窗口中,右键单击“WatchPortalFunction”解决方案,单击“添加”,而后单击“新建项目”。github
(2)由于模拟在单元测试中模拟使用web api的方式进行测试,因此使用 “nuget” 点击安装 “Microsoft.AspNetCore.Mvc” 包,进行测试。web
(3)添加单元测试方法代码api
1 var httpContext = new DefaultHttpContext(); 2 var queryStringValue = "adb"; 3 var request = new DefaultHttpRequest(new DefaultHttpContext()) 4 { 5 Query = new QueryCollection 6 ( 7 new System.Collections.Generic.Dictionary<string, StringValues>() 8 { 9 { "model", queryStringValue } 10 } 11 ) 12 }; 13 14 var logger = NullLoggerFactory.Instance.CreateLogger("Null Logger"); 15 16 var response = WatchPortalFunction.Run(request, logger); 17 18 response.Wait(); 19 20 // Check that the response is an "OK" response 21 Assert.IsAssignableFrom<OkObjectResult>(response.Result); 22 23 // Check that the contents of the response are the expected contents 24 var result = (OkObjectResult)response.Result; 25 dynamic watchinfo = new { Manufacturer = "Abc", CaseType = "Solid", Bezel = "Titanium", Dial = "Roman", CaseFinish = "Silver", Jewels = 15 }; 26 string watchInfo = $"Watch Details: {watchinfo.Manufacturer}, {watchinfo.CaseType}, {watchinfo.Bezel}, {watchinfo.Dial}, {watchinfo.CaseFinish}, {watchinfo.Jewels}"; 27 Assert.Equal(watchInfo, result.Value);
在“测试资源管理器”窗口,成功的显示了测试浏览器
3个单元测试方法所有测试成功。服务器
Azure Function 在Azure云中 Azure Function App 的上下文中运行。 函数应用是一个容器,指定用于运行 Azure Functions 的操做系统以及可用资源,例如内存、计算能力和磁盘空间。 Azure Functions 应用还提供用于运行函数的公共 URL。 在后台,Azure Functions 应用是运行 Web 服务器的一个或多个虚拟机的集合。 发布 Azure Functions 时,需将其部署到这些虚拟机。app
使用 Visual Studio 将函数部署到云中的 Azure Functions 应用。 首先,将建立 Azure Functions 应用,而后可以使用 Visual Studio 中的“发布”向导部署函数。使用 Azure Functions,可轻松使用应用服务持续集成部署函数应用。 Azure Functions 可与 BitBucket、Dropbox、GitHub 和 Azure DevOps 集成。 这样,经过使用其中一项集成服务实现的函数代码更新所在的工做流将触发到 Azure 的部署。函数
持续部署选项很是适合用于频繁集成多个分发内容的项目。 它还容许维护对函数代码的源代码管理。 目前支持如下部署源:微服务
(1)登陆 Azure 在 “Azure” 门户菜单中,选择 “建立资源” ,建立 “函数应用”
(2)点击函数应该,进行建立 函数应用
(3)点击 “查看+建立” 建立,等待函数应用建立完毕,传向其资源,查看 “watchfunctions-allenMaster” 概述或者在门户中选择 “全部资源” ,点击“watchfunctions-allenMaster”函数。
(1)在 “Azure.Protal.Functions” 解决方案上,右键点击 “发布”
注意:
1),选择发布目标:Azure 应用服务计划
2),Azure 应用服务计划 按需运行代码的专用计划,选择:选择现有
点击 “建立配置文件”
(2)点击发布,将“Azure Functions”应用部署在“Azure”上
此时输出列表显示 ”发布成功“,同时在“Azure”门户中查看刚才部署的"Azure Functions"应用。
刷新”watchfunctions-allenMaster“ 函数应用,能够看到函数项下多了两个触发器
此时,咱们能够看到咱们建立项目的时候默认的 "Function1 HttppTrigger" 和咱们在Vistual Studio 中建立的 "WatchPortalFunction Trigger"
(3)复制”概览“ 里面的 url 或者 Vistual Studio 发布页面的 url 在浏览器中进行测试
当出现这个界面,就显示建立的azure Functions 运行成功,而后咱们进行测试写的触发器
(4)浏览器输入:https://watchfunctions-allenmaster.azurewebsites.net/api/WatchPortalFunction?model=abd
现已经在云中建立了 Azure Functions 应用,并将函数从 Visual Studio 发布到了此应用。
ok,在此, 使用Vistual Studio 开发,测试,部署 Azure Functions 应用完结
此时,咱们对 Visual Studio开发 “Azure Functions”应用有个大概的了解,而之后 Azure Functions 做为Azure 开发的一部分,也是一个很理想的解决方案,用来处理批量数据、集成系统、使用 iot 以及生成简单的Api和微服务,而微软在 Azure 中提供的 Azure Function 是 按照使用付费订价模型:也就是仅仅为运行代码所用的时间而付费,这一点比某云仍是好一些。以上也是本身的学习的过程,谢谢各位指点。
github地址:https://github.com/allentmater/Azure.Portal.Functions.git
做者:Allen
版权:转载请在文章明显位置注明做者及出处。如发现错误,欢迎批评指正。