Интеграционные тесты .net sql и полный текстовый каталог

Я пытаюсь написать несколько интеграционных тестов для части нашего сайта, которая использует хранимую процедуру вместо запуска через EF.

Мы просто хотим убедиться, что данные, которые мы получаем из хранимой процедуры, действительно верны и правильно интегрируются с нашим кодом.

Наша базовая установка для интеграционных тестов заключается в том, что мы выполняем их все в рамках транзакции, поэтому процесс выглядит следующим образом:

  1. Сотрите данные из соответствующих таблиц
  2. Вставьте соответствующие тестовые данные
  3. Запускаем нашу хранимую процедуру
  4. Подтвердите результаты

Часть хранимой процедуры, которую мы тестируем, работает с полным текстовым каталогом таблицы, часть просто запрашивает таблицу.

Все это работает нормально для тех частей хранимой процедуры, которые не используют полнотекстовый индекс, но для тех, которые используют, я получаю интересные результаты.

Если я не удалю данные вручную перед тестами (например, через SQL Server Explorer), потому что наши фиктивные данные очень похожи на наши начальные данные, все тесты проходят.

Однако, если я сначала очищаю данные вручную, так что, по сути, он начинается с пустого полнотекстового каталога, все тесты терпят неудачу. Я полагаю, что полнотекстовый индекс, вероятно, не очищается должным образом в тесте, но затем он также не заполняется до запуска моей хранимой процедуры. Я попытался добавить ожидание (как в коде, так и в этом посте stackoverflow: Как я могу узнать, когда завершено заполнение полнотекстового индекса SQL?), но ни один из них, похоже, не позволяет сначала заполнять полнотекстовый индекс.

Мои познания в области полнотекстового индексирования невелики, поэтому я не уверен, связано ли это с тем, как я это делаю, или с тем, что оно находится в рамках транзакций, или с тем, что я делаю неправильно.

Интересно, что если я не запустил его в области транзакций один раз (чтобы он заполнил базу данных), а затем запустил его во второй раз, он пройдет, поэтому я знаю, что если полный текстовый каталог есть/работает, тесты будут работать.

У кого-нибудь есть идеи? Я рад опубликовать части кода, если это необходимо.

Спасибо, доктор медицины


person MDo    schedule 02.08.2012    source источник
comment
У меня такая же проблема - я думаю, что ваше объяснение того, что происходит, правильно. Я предполагаю, что полный текстовый каталог не заполняется до тех пор, пока транзакция не будет зафиксирована.   -  person cbp    schedule 31.08.2012