御成門プログラマーの日記

Microsoft Azureなどの技術情報を共有

【Azure Functions 2.0】NUnitを使用して、自動テストを行う

今回は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);
        }
    }
}

テストを実行してみる

「テスト」→「ウィンドウ」→「テスト エクスプローラー」
全てを実行を押すと、テストが実行され、結果が出力されました。 f:id:tt-suzukiit:20181206204816p:plain
これで自動テストができるようになりました。

最後に

自動テストができるようになったので、
今度、FunctionsのCI/CDを紹介できたらと思います。

参考ページ

blog.okazuki.jp