Bot Framework と Microsoft Graph で DevOps その 5 : VSTS で Continuous Integration

※2017/6/10 ファイルコピータスクの追加手順を忘れていたので追加。これないとファンクションテスト動きません。。。 前回は依存サービスをモック化しました。今回は VSTS で CI (Continuous Integration) を設定します。 とりあえずコードチェックインの確認 1. VSTS にログインして、今回用のプロジェクトを開きます。Visual Studio のチームエクスプローラーからも、ワンクリックで移動できます。 2. Code 項目でこれまでのコードがチェックインされていることを確認。 ビルド定義の作成とテスト実行 コードをチェックインするたびに、コンパイルしてテストを実行できるように、ビルド定義を作ります。 1. Build & Release タブより Builds を選択。「New definition」をクリック。 2. テンプレートより ASP.NET を選択。 3. 名前を適当に変更。 4. Get sources 項目から、正しいソースが選択されているか確認。ソース管理に GitHub 等も使えます。 5. Test Assemblies を選択し、Test assemblies の項目を変更。今回のユニットテストのライブラリは O365Bot.UnitTests.dll なので合わせました。 6. その他のオプションも必要に応じて変更。ここではコードカバレッジをチェック。 7. Add Task をクリック。 8…. Read more

Bot Framework と Microsoft Graph で DevOps その 4 : Microsoft Fakes, AutoFac, Moq で依存サービスのモック化

前回は AuthBot と Microsoft Graph を呼べるようにしました。今回は変更したものをユニットテストしてみます。 依存サービスのモック 依存サービスはモックを作り、常に意図した動作をするようにすることで、本当にテストしたい部分のユニットテストを行います。AuthBot と GraphService それぞれモック化します。 AuthBot のモック化 コード内で AuthBot の GetAccessToken メソッドを実行して、OAuth 2.0 のアクセストークンを取得していますが、ここをモック化します。ソースコードを見ると GetAccessToken は静的な部分メソッドですので、Microsoft Fakes を使います。Fakes の詳細はこちら。 1. Fake アセンブリを作るため、ユニットテストプロジェクトにも AuthBot を追加して、各種 NuGet パッケージを最新に更新します。 2. AuthBot 参照を右クリックして、Fakes Assembly を追加します。 3. UnitTest1.cs の ShouldReturnCount メソッドを削除して、以下のように書き換えます。 [TestMethod] public async Task ShouldReturnEvents() {     // Fakes を使うためにコンテキストを作成     using (ShimsContext.Create())… Read more

Bot Framework と Microsoft Graph で DevOps その 3 : AuthBot で認証して Graph を実行

前回は C# でボットのユニットテストができる状態にしました。今回は Microsoft Graph を呼ぶ個所を実装してみます。とりあえず自分の予定でも取得してましょう。 アプリ登録などもろもろ準備 AuthBot 追加 Microsoft Graph は OAuth 2.0 をサポートしていて、ボットアプリから認証するには AuthBot というものを使うのが一番簡単です。今回のシリーズではこの AuthBot を使います。 AuthBot: https://github.com/MicrosoftDX/AuthBot 1. AuthBot NuGet パッケージをプロジェクトに追加します。Include prerelease にチェックしてください。 2. Web.config 内、appSettings 配下に以下を追加します。内容は後で埋めます。 <!– AAD Auth v1 settings –> <add key=”ActiveDirectory.Mode” value=”v1″ /> <add key=”ActiveDirectory.ResourceId” value=”https://graph.microsoft.com/” /> <add key=”ActiveDirectory.EndpointUrl” value=”https://login.microsoftonline.com” /> <add key=”ActiveDirectory.Tenant” value=”” /> <add key=”ActiveDirectory.ClientId”… Read more

Bot Framework と Microsoft Graph で DevOps その 2 : C# でのユニットテスト環境構築

前回は Bot Framework でユニットテストの考え方について紹介しましたが。今回は C# でユニットテストができる状態にまずしてみます。 プロジェクトの作成などもろもろ準備 まず基本的なセットアップをしてしまいます。 VSTS プロジェクト VSTS にサインアップして、任意のプロジェクトを作成してください。 1. VSTS アカウントにサインイン、「New Porject」 からプロジェクト作成。 2. バージョン管理は Git にしてみます。 3. とりあえず Clone in Visual Studio をぽちっと。 4. 適当なフォルダにマップして完了。 Visual Studio プロジェクト 1. Team Explorer から新しくソリューションを作ります。 New をぽちっと。 2. Bot Application テンプレートを選択して、作成。名前はお任せで。ここでは O365Bot と一旦。 3. ユニットテスト用のプロジェクトも追加します。ソリューションを右クリックして、プロジェクト追加。名前は O365Bot.UnitTests としました。 ユニットテストプロジェクトにテスト用コード追加 とりあえず今回必要最低限のソースを取ります。 1. BotBuilder GitHub よりソースを取得… Read more

Bot Framework と Microsoft Graph で DevOps その 1 : ユニットテスト概要

Bot 開発してますか?DevOps 取り入れてますか?ということで今回からしばらくこのテーマに沿って考えてみます。 具体的に Microsoft Graph を利用したアプリを作りながら作業を進めますが、初回の今回はテストの概念をまず。 – DevOps についてはメソッド屋のブログにある 「DevOps スタータキット」を参考にしてください。 – Bot Framework を利用したボットアプリ開発は多く記事があるので検索してみてください。例えばSecretaryBot 開発チーム Blog などは分かりやすいです。 Bot Framework とユニットテスト概要 DevOps で一番大事なことはカルチャーですが、技術的な面に限定すると、個人的にはテストです。テストの自動化ができないと継続デリバリーできません。Bot Framework で作るボットアプリの場合テストは UI が無い分簡単ですが、MVC 等他のアプリとは異なるアプローチが必要です。以下ブログはユニットテストにおいてその点の考察がよくまとまっています。翻訳は機械に任せて理解すべきところを意訳してみます。かなり抜粋して意訳しているので原文も是非。 参考元 https://www.microsoft.com/reallifecode/2017/01/20/unit-testing-for-bot-applications/ Thanks to Catalyst team and Mor Shemesh who shared their precious knowledge and allow me to re-use your contents. ちなみにブログは Node.js での例ですが、私は C# メインなので、後半で… Read more