EF を介して実行するのではなく、ストアド プロシージャを使用するサイトの一部の統合テストを作成しようとしています。
ストアド プロシージャから返されるデータが実際に正しく、コードと正しく統合されることを確認したいだけです。
統合テストの基本的なセットアップは、トランザクション スコープ内ですべてを実行しているため、プロセスは次のようになります。
- 関連するテーブルからデータを消去します
- 適切なテスト データを挿入する
- ストアド プロシージャを実行する
- 結果をアサートする
テストしているストアド プロシージャの一部は、テーブルのフル テキスト カタログで実行され、その一部はテーブルに対してクエリを実行するだけです。
これは、フルテキスト インデックスを使用しないストアド プロシージャの部分では問題なく実行されますが、フル テキスト インデックスを使用する部分では興味深い結果が得られます。
モック データはシード データと非常によく似ているため、テストの前にデータを手動で (つまり、SQL サーバー エクスプローラーを使用して) 消去しないと、すべてのテストに合格します。
ただし、最初にデータを手動でクリアすると、基本的に空のフルテキスト カタログから開始され、すべてのテストが失敗します。私が理解しているのは、テストでフルテキスト インデックスが適切にクリアされていない可能性が高いことですが、ストアド プロシージャを実行する前にデータが取り込まれていない可能性もあります。私は待機を追加しようとしました(両方のコードと、このstackoverflowの投稿に似ています:SQL Full Text Index Populationが終了したときをどのように知ることができますか?)しかし、どちらも最初に全文インデックスを作成することを許可していないようです。
全文索引作成に関する私の知識はそれほど多くないので、それが私のやり方なのか、トランザクションの範囲内にあるという事実なのか、それとも私が間違っているのかはわかりません。
興味深いことに、トランザクション スコープ内で 1 回実行せず (データベースにデータを入力する)、2 回目に実行すると合格するので、フル テキスト カタログがそこにある/動作している場合、テストが動作することがわかります。
誰でもアイデアはありますか?必要に応じて、喜んでコードの一部を投稿します。
ありがとう、MD