Yamlでレスポンスを定義できるHTTPモックツール、yamoc
HTTPサーバーを模擬的に起動し、HTTP通信するソフトウェアのテストを補助するスタンドアロンのツールを作成した。
(動作イメージ)
ファイルパスとレスポンス定義が書かれたyamlを読み込み、一致した条件に対して固定のレスポンスを返す。
port: 8888 paths: # matching GET /hello - path: /hello methods: get response: status: 200 bodytext: hello headers: Content-Type: text/plain
コンセプト
- ハリボテ、軽量、シンプル
- yamlファイル1つで状況が完全再現される。
- レスポンスは単純に固定値を返す。レスポンスを変えたければ、yamlファイルを変更してプロセスを起動しなおす。
- 手元で動作確認する程度の用途を想定。NginxやらIISが並ぶ環境に代理として立てるときの挙動は保証しない。特にメモリ消費やバッファリングなどを考慮していない。
使い方・入手方法
[1] ツールをビルドするため、.NET Core SDKをインストールする。また、動作する環境には少なくとも .NET Core Runtimeが必要。
https://dotnet.microsoft.com/download
(※Windows限定だが、Visual Studioに.csコードすべて入れてNugetにパッケージaddすれば、.NET Frameworkをランタイムとするexeもビルドできる。ただし自己責任)
Github https://github.com/pakuyuya/yamock-cs
[3] Readme.mdに従いビルド・yamlファイルを作成して実行する
わかっているバグ、問題と今後のfeture
バグ
- 同時アクセスすると、ログがかぶってめちゃくちゃ見にくくなる。ロギングを別スレッドでキューイング/ディスパッチする実装に変えたい
feture
実装上の問題
- 自動テストがほぼ未実装
- 実装が全く整理されていない。現状、2,3のサブパッケージに分かれているが密結合で単独でテストできない。
- Httpコンポーネントに直接依存したせいで、自動テストが非常に面倒になってしまった。テストコードをまともに書いていないので、いつか改善したい。
- 自動テストがほぼ未実装