0

カスタムの等価比較子を作成し、比較子に対して適切なテストを実行しました。

今、比較子を使用してテストしているクラスが実際に渡す必要がないように、それをモックしようとしています。

私のメソッド呼び出しは次のようになります。

left.Except(right, customEqualityComparer);

変数 'left' と 'right' は任意の型の 2 つのリストであり、customEqualityComparer は私のカスタム等値比較子です。

私の問題は、 customEqualityComparer をモックする方法がわからないことです。これは、まだ現実的な方法で動作する必要があるためです。

メソッドを含むクラスを作成することを検討していました:

public List<object> LeftExceptRight(customEqualityComparer, left, right){}

そして、メソッド全体を嘲笑します。これはやり過ぎですか?私は他の選択肢を見ることができません..

4

1 に答える 1

1

これはやり過ぎですか?

私にはそう聞こえます。そもそもなぜあなたはあなたの比較者を嘲笑したいのですか? 外部の Web サービスやデータベースを使用するなど、テストに関して特に難しいことはありますか? (それは異常でしょう。)

あなたの比較子がそれ自体で徹底的にテストされている限り、実際にそれを使用するもののテストでそれを使用しても問題はないと思います. それをあざけることで大きなメリットは得られません。実際には、まったく逆です。テストで使用すると、呼び出し元のコードと比較子の間の統合も効果的にテストできます...それらが単独ではなく一緒にうまく機能することを確認します。

単体テストでは、一度に 1 つのクラスのコードのみをテストする必要があると独断的に主張する人がいることは知っています... しかし、プラグマティズムのおかげで、多くの場合、モックは本当に価値がありますが、簡単に行き過ぎてしまうと信じるようになりました。それ - そして、実際の実装を使用するだけの単純なアプローチは、多くの場合、進むべき道です.

于 2013-07-02T22:00:38.493 に答える