今回はAzure Functionsの関数に対してNUnitを使って、自動テストを行います。
前準備
前回の記事でVisualStudioから作ったソースコードをそのまま使用します。
ソースコードの元の内容については下記を参照。
onarimonstudio.hatenablog.com
テストプロジェクトを作成します
テスト用のプロジェクトを新規で追加します。
NUnitを使用するためにパッケージをインストールします。
「プロジェクト」→「Nugetパッケージの管理」
下記5点のパッケージをインストールします。
NUnit
NUnit3TestAdapter
Microsoft.NET.Test.Sdk
Moq
Microsoft.AspNetCore.App
テストコードを記述します
追加したテストプロジェクトにクラスを追加し、
テストコードを記述します。
using Microsoft.AspNetCore.Http; using Moq; using NUnit.Framework; using System.IO; using System.Threading.Tasks; using Microsoft.Extensions.Logging; using Microsoft.AspNetCore.Mvc; namespace Tests { public class Tests { [Test] public async Task 出力結果が正しいかのテスト() { var httpRequestMoq = new Mock<HttpRequest>(); httpRequestMoq.Setup(x => x.Query["name"]).Returns("onarimonprogram"); httpRequestMoq.Setup(x => x.Body).Returns(new MemoryStream()); var response = await HelloFunctionsAppHttpTrigger.Function1.Run(httpRequestMoq.Object, new Mock<ILogger>().Object); //関数の実行が成功しているかをテスト Assert.True(response is OkObjectResult); var responseOkResult = (OkObjectResult)response; //出力値が正しく出力されているかをテスト Assert.AreEqual("Hello, onarimonprogram", responseOkResult.Value); } } }
テストを実行してみる
「テスト」→「ウィンドウ」→「テスト エクスプローラー」
全てを実行を押すと、テストが実行され、結果が出力されました。
これで自動テストができるようになりました。
最後に
自動テストができるようになったので、
今度、FunctionsのCI/CDを紹介できたらと思います。