.NET Conf 2017 Tokyo, Japan の LT https://csugjp.connpass.com/event/66004/
IIS URL Rewrite のユニットテストをしよう!株式会社一休宿泊事業本部 開発部飯迫 正貴2017/10/07 LT
View Slide
IIS URL Rewrite とは?
IIS URL Rewrite とは?• URL Rewrite Module• https://docs.microsoft.com/en-us/iis/extensions/url-rewrite-module/using-the-url-rewrite-module• 設定に書いたルールに従ってURLを書き換えてくれる
課題
課題• 便利な反面、継ぎ足し続けるとわけが分からなくなる• 負債化しやすい• 全体が理解できず、変更すると他が壊れるのではという恐怖• ジェンガ状態• 気軽にリファクタリングできない
www.ikyu.com/rewrite.config
きっかけ• ある日の会議の雑談• わたし「そういえばRewriteがバグりやすいんですよねえ」• CTO「はてなでは rewrite のテスト書いてたよ」• http://d.hatena.ne.jp/onishi/20101017/1287277579• 数日後• しばやん「テスト用のライブラリ作りました」• http://blog.shibayan.jp/entry/20160620/1466392651
IIS Express TestKit
IIS Express TestKit• Rewrite Rule のテストが書けるハイパー便利ツール• Outbound Rule も対応• OSS• https://github.com/shibayan/iisexpress-testkit
Project Example
Rewrite Rule Example
Outbound Rule Example
運用してみた
運用してみた• 壊れるのを恐れず、気軽に変更できるようになった• 最高• CI に Rewrite のユニットテストを追加• 不正なRewriteがリリースされる事故がなくなった• データセンターからクラウドに移行したときにも活躍• PaaSに乗せるためアプリを分割したらテストが通らなくなった• 通らなくなったもの=分割してなくなった部分のテスト => Rewriteも分割• ユニットテストを書いたことで参照されてないルールがあぶり出された• そしてリファクタリング
参照されてないルール
まとめ• IIS の URL Rewrite もユニットテストが書ける!• URL Rewrite 運用で困っている人は今すぐインストールして書きましょう!• Install-Package IisExpressTestKit