上一篇介紹了使用使用 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
版權:轉載請在文章明顯位置註明做者及出處。如發現錯誤,歡迎批評指正。