20年前に言えなかった事
- 実引数に値をセットして、関数を実行して、解が帰ってくる
のが関数の(正)作用で、それ以外の作用(副作用)が無い場合、自然に自動テストが書けると思います。
しかし、「実引数に値をセットする」事の方が、関数実行より困難な場合(虎が屏風内に居る場合)、
- 実引数にセットすべき値をどうやって持って来るか?
をこそ、自動化すべきだと思います。
(ただ、それは「副作用」で有り、自動テストがしにくいのは事実です。)
時事ネタでは有りますが、マ⚫︎ナンバーのシステムでも、値をどうやって持って来るかで、困難な状況になっている様に見えます。
事務計算などでは
私がやっていた事務計算などでは、
- 実引数に値をセット出来たとして、実行する関数は、
- 総和だけで、
- 実引数にセットすべき値を得る手間の方が100倍は大変で、
- 自動テストへの労力も正作用と副作用で100倍違うとすると、
- 自動テスト出来る領域の労力分配の割合は10000分の1となってもおかしく無い
状況になる事が有りました。
副作用上等の「関数」ばかりになるのは、
- 困難な領域こそ自動化したい
との表れだったのかも知れません。
結論
自動化テストへの道のりは遠く(20年後に形而上の謗りを受けているかも知れない)、それゆえ、これからも「JavaScriptが大変」な事でプログラミングが嫌いになる人は存在し続けることでしょう。