0

私は単体テストを始めたばかりで、被験者がモデルをテストしているとき、少し混乱し、少し圧倒されています。現在、セッターとゲッターを備えた ActiveRecord モデルがいくつかあります。それらのほとんどは単にデータをカプセル化するためのものであり、firstName フィールドと lastName フィールドの連結を返す getFullName() メソッドなど、何か新しいものをもたらすものはごくわずかです。

では、何をテストすればよいでしょうか。すべてのプロパティ割り当てをテストする必要がありますか、それとも getFullName() などの特別なメソッドのみをテストする必要がありますか? どこまで行けばいいですか?クラス自体をいつテストし、データベースの挿入を実際にテストするのはいつですか? エンティティに既に存在する検証についてはどうですか?それを考慮に入れる必要がありますか?

私を圧倒するのは、多くのフィールドを持つエンティティに必要と思われるテストの量です。それを回避する方法はありますか?

例は特に高く評価されます!

4

1 に答える 1

0

プログラムが適切に動作することを確信させるために必要なテストを作成します。

クラスにビジネスロジックがなければ、そのクラスのテストを書く必要はないと主張する人がいます。その引数により、単純なゲッターとセッターをテストする必要はありません。「ビジネス ロジック」を持つコード部分のテストのみを記述します。

ただし、反対側の議論として、コードを作成する場合は、コードのテストを作成する必要があります。その引数によって、それらのテストを作成する必要があります。テストは本当に些細なことになります。オブジェクトをインスタンス化し、setter で値を設定してから、その値が getter で返されることをアサートします。単純なテストが多くなり、書くのが面倒になることがあります。

私は 2 番目の陣営にいますが、何かをテストするのが難しい、またはテストするのが苦痛になる場合は、設計に問題があるという兆候であることがわかりました。この場合、不要なものに対するアクセサー メソッドが存在する可能性があります。発生した可能性があるのは、データ オブジェクトにすべてのプロパティがあり、それぞれにゲッターとセッターが「必要」であるということです。しかし、あなたは本当にですか?

あなたの質問では、getFullName方法があると述べました。getFirstNameでは、 andのメソッドが本当に必要getLastNameですか? ページのレンダリング中にオブジェクトのデータが変更されるのはなぜですか? 更新/作成のために新しいオブジェクトをデータベースに送信することによって更新が行われるように、セッターを忘れてデータレコードを「不変」にしてみませんか?

あなたがこの質問をしている理由は、あなたがこのコードを書き、今戻ってそのテストを書こうとしているからだと思います。このデータ オブジェクトがあり、すべてのゲッターとセッターが自動的に作成されます。次に、それを使用していたときに必要な追加のメソッドを作成しました (getFullNameメソッドなど)。むしろ、アクセサーは必要なときにだけ作成することをお勧めします。次に、その時点でテストを作成すると、関数のリストが大幅に小さいことがわかります。必要なデータの組み合わせを取得するいくつかのメソッドと、特定の形式 (つまり json) ですべてのデータを取得するための一括メソッドがある場合があります。

于 2015-10-16T15:20:22.467 に答える