JavaScriptでカジュアルにテストを書いて理解する

近頃からかは知らないけれども、JavaScriptの世界でもテストかいてこ、みたいな流れがあります。そう、流れがあるんですが、僕はそもそもあんまりプログラミング自体に精通しているわけではないので、結構テストを書くという概念自体が難しいわけです。なんちゃらテストみたいな概念一杯あるじゃないですか。どれがなんなんだかよくわかりません。いつまでたっても要所要所でlogを吐いたり関数叩いたりして意図した結果が返っているか目視で確認してしまうわけです。

でも、それもまたテストなんだと思います。なんだかそう思うと、まず自分のやっていることをスクリプトにしたらいいだけじゃなんじゃないかという気がしてきました。最近safe-eval的なことをする関数を書いていたので試しやってみることにします。
github.com/kawasako/string2object.js

関数に色んな引数を与えて意図した結果かざっくりチェックする普通のJavaScriptのコードを書きました。

特にbrowser上で動かす必要もないのでNode.jsとして実行させてみます。

if文のチェックでもう少し複雑なことをしようと思うと、確かになんかもっといい感じにやってくれる関数みたいなものが欲しくなってきます。それがアサーションライブラリというわけですか。

逆に、テスト対象がシンプルな関数ではなくて、なんか副作用があるものだったり環境変数的なものを受け取るようだとtaskとかbeforeEachみたいな概念が欲しくなりそうです。複数ブラウザで同時に走らせたり、ファイルの変更を監視して自動的に実行しようと思ったら、自分で作るのは面倒そうです。それがテストフレームワークというわけですか。

あーそーゆーことね完全に理解した。(わかってない)