2009-04-29 12 views
1

ASP.NET MVCとTDDを使い始めました。私はユニットテストの中で、DBのような他のシステムではなく、あなたのコードをテストすることに焦点を当てるべきだと読んだことがあります。しかし、不可欠な機能がDBに存在するとどうなりますか?ASP.NET MVCでの全文検索の単体テスト方法

プロジェクトとパターンの設定方法の最初のガイドとして、MVC Storefrontシリーズを使用しました。フルテキスト検索が不可欠であるとして、私は私のリポジトリ今

IQueryable<HealthOrganization> SearchOrganizations(string phrase); 

内の関数としてこれを設定して、この検索のロジックは、フルテキストデータベース内のいくつかの他の機能とテーブル値関数を必要とします。これらの関数のロジックは、ファクerリポジトリで正確に正しくなることは不可能です。これを単体テストし、検索でTDDを実行するための最良の戦略についてのあなたの推奨は何ですか?

答えて

1

これはユニットテストではなく、統合テストです。だからあなたはTDDのようにそれを実装することはほとんどできません。

あなたのコードはデータベースを呼び出すことはあまりありません。だから、たくさんテストする必要はありません。最下位レベルでデータベース呼び出しを疑似できる場合は、呼び出しが発生したかどうかをテストできます。これが非常に複雑になる場合は、単体テストを書かない方がよいでしょう。それは維持するのが難しいだけです。

統合テストを作成するには、実際のデータベースが必要です。

+1

を返します。しかし、検索が重要な機能であるアプリケーションをお持ちの場合、最初にテストをテストする検索テストを開発したくないですか?統合テストを始めることができますか? –

+0

@rundbom:あなたはできます、私はそれをしません。統合テストの作成には時間がかかります。 TDDでは、あなたは素早くなりたいです。そうでない場合、「フロー」が中断されます。もう一つの理由があります。 TDDでは、あなたのコードがあなたがしようとしていることを達成したいと思っています。システム全体が期待通りに動作するかどうかはテストされません。説明するのは難しいですが、統合テストが失敗した場合、ユニットテストが失敗したときと同じ意味があります。 –

0

あなたは、あなたが検索コードをチェックし、既知のアイテムのセットを含むテスト・データベースを作成することもできますが、私は考え出し何の一種だあなたが期待する結果..

関連する問題