minitestでWeb APIのテスト
PR

minitestでWeb APIのテスト

チェックリスト ソフトウェア
記事内に広告が含まれています。
スポンサーリンク

Web APIのテスト。ブラックボックステストをしようとすると、HTTPでアクセスしてレスポンスを処理して…となりますが、HTTP GETで済むのであればRubyopen-uriを使いたくなります。そのため、テストコードもRubyで書くことになります。

Rubyのテストフレームワークはいくつかありますが、minitestを使ってみました。

スポンサーリンク
スポンサーリンク

お題はifconfig.me

ifconfig.me という自分のIPアドレスを表示するサイトで、JSON形式でレスポンスを返してくれるインターフェースがありました。それを対象として、minitest を書いてみました。

test_ifconfig.rb という名前で保存したら、

$ docker run -it --mount \ type=bind,source=$(pwd)/test_ifconfig.rb,target=/test_ifconfig.rb \
ruby:3.1-slim ruby /test_ifconfig.rb

のようにして動かしてみます。

testはレスポンスのうちmethodがGETであるかどうかしか見ていませんが、他のパラメータも同じように it ~ do でtestすればよいかと。expect()を並べるのでもいいですよね。

パラメータを変えて呼び出してテストする必要があるのであれば、before にAPI呼び出しを書くのではなく、it ~ do の最初のほうでAPI呼び出しをして、レスポンスはexpect()を並べて検証する感じでしょうか。

スポンサーリンク

RSpecよりはお手軽

RSpecは設定ファイルでいろいろ設定する必要があったという印象ですが、minitestはテストを書いたrbファイルを実行するだけでOKです。E2Eテストのような大掛かりなものでなく、サクッとテストしたいときには便利かと。

minitestでE2Eテストができるのか?というところは、どうなんでしょう?RSpecでE2Eテストを書いていたことがあるので、minitestで書こうとは思わないのですが…。

コメント

タイトルとURLをコピーしました