Part11:ユニットテスト

海未「では今回は、ユニットテストを見てみましょう。簡単なFizzBuzzプログラムを使います」
ことり「FizzBuzz詐欺・・・」

海未「ユニットテストは、プログラムの単体テストです。テストハーネスを使って自動化するのが一般的で、Node.jsにも自動テストの仕組みが色々あります」
穂乃果「ホワイトボックステストだね」
海未「そういえば穂乃果たちは、テストについて調べていましたね。その通り、ホワイトボックステストに該当します」

海未「今回はテストフレームワークとしてmocha、アサーションライブラリとしてchaiを使います」
ことり「おいしそうだね♪」
海未「・・・どちらもnpmからインストールできます」

海未「mochaをグローバルインストールしていますが、これはmochaがコードから利用するだけのモジュールでなくmochaコマンドをインストールするためです」
ことり「アプリみたいなパッケージもあるんだ」
海未「はい。npmでインストールできるパッケージは、ExpressのようなWebフレームワークからgulpのようなビルドツールまで様々なものがあります」

海未「では、テスト対象のコードを用意します」

海未「3の倍数だと"ファイトだよっ!"、5の倍数だと"ちゅんちゅん"、3と5の公倍数だと・・・・・・"ラブアローシュート!"・・・です」
穂乃果「海未ちゃん、自分で書いておいてそれは・・・」
海未「いざ言葉にすると恥ずかしいではないですか!」
ことり「FizzとかBuzzとかどこいったのかな・・・」

海未「これに対するテストコードはこのようになります」

海未「describeの中のitが1件のテストケースになります」
ことり「fizzbuzz(1) should equal 1、普通に読めるね」
穂乃果「うーむ・・・」
海未「穂乃果の英語力には期待していません。このshouldは、Objectのプロトタイプを拡張する形で実装されています」
ことり「じゃあ、このコードの中なら何にでもshouldプロパティが付いてるんだ」
海未「そうなりますね。shouldには今回使ったequalの他にhavebeなどのアサーションメソッドが用意されています」

海未「これをmochaコマンドで実行すると」

海未「このようになります」
ことり「4件とも成功だね」
海未「これが最もシンプルなユニットテストです」

海未「少し応用です。今回は必要ないのですが、テストの前後に処理を入れることができます。データの準備や環境のクリーンアップなどに使います」

海未「実行結果を見れば分かる通りですが、beforeafterは最初と最後に1回、beforeEachafterEachは各テストケースの前後に実行されます」


海未「Node.jsについては、知っておくべきはこんなところでしょうか」
穂乃果「中締め?」
海未「そうですね。これからExpressなどに手を付けるとかなり長丁場になってしまいますし」
穂乃果「まあ、何かネタがあればまた集まればいいよね」
ことり「なんか当初の目的が」
海未「気にしてはいけません」

穂乃果「では再び中締めということで。お相手は高坂穂乃果とっ!」
ことり「南ことりと♪」
海未「園田海未でした♡」
3人「「「まったねーっ!!」」」


LINEで送る
Pocket


コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です