私は何年にもわたってたくさんの言語でプログラミングをしてきましたが、一般的にはかなり上手だと思います。ただし、自動テストを作成したことはありません。単体テスト、TDD、BDD、何もありません。
私は自分のプロジェクトに適切なテストスイートを書き始めようとしました。変更を加えた後、プロジェクト内のすべてのコードを自動的にテストできることの理論的価値を確認できます。RSpecやMochaなどのテストフレームワークが、前述のテストのセットアップと実行を合理的に簡単にする方法を理解できます。また、テストを作成するために提供されるDSLが気に入っています。
しかし、コードのどの部分に対しても実際の単体テストを作成することはできませんでした。私が書いたものは、実際に役立つ方法で非常にテスト可能であるようには思えません。
- 関数は、それらが使用されているコンテキストの外ではあまり呼び出せないようです。私が作成する多くの関数は、HTTPリクエスト呼び出し、データベースクエリ、またはその他の簡単にテストできない呼び出しを行います。
- 一部の関数はHTMLの文字列を返します。HTML文字列を同じ文字列のハードコードされたバージョンと比較することはできますが、それはコードのその部分を変更する能力を制限しているように見えます。さらに、テストコードに大量のHTMLが含まれていると、混乱します。
- モック/スパイオブジェクトをメソッドに渡し、それらが特定のメソッド呼び出しを取得することを確認できますが、それは私が「テスト」しているメソッドの実装の詳細をテストしているだけです。
適切なBDDテストを開始するにはどうすればよいですか?(MochaとNode.jsを使用してこれを実行したいのですが、BDDに関する一般的なアドバイスも問題ありません。)