Respawn не сбрасывает мою базу данных SQL Server - PullRequest
0 голосов
/ 29 августа 2018

Я использую Respawn для очистки моей тестовой базы данных, но при выполнении этого метода:

public static Task ResetCheckpoint() => Checkpoint.Reset(ConfigurationManager.ConnectionStrings["TestConnection"].ConnectionString);

Это сообщение об ошибке отображается:

Сообщение: System.InvalidOperationException: недопустимая операция. Соединение закрыто.

Я уже проверил значение, возвращаемое ConfigurationManager.ConnectionStrings["TestConnection"].ConnectionString, и оно верное.

Я основал свою структуру интеграционных тестов в этом примере проекта Джимми Богард : https://github.com/jbogard/ContosoUniversityDotNetCore-Pages, более конкретно, эти два класса:

1 Ответ

0 голосов
/ 30 августа 2018

Я понял это. Проблема была в тайм-ауте соединения. Я использую клон из рабочей базы данных в качестве тестовой базы данных, и есть много таблиц с большим количеством строк, некоторые с миллионами регистров. Поэтому я вручную запустил команды, сгенерированные Respawn, в SQL Server Management Studio, и потребовалось 17 минут, чтобы все это очистить. На данный момент я смогу писать и запускать свои тесты с чистой базой данных без проблем.

Итак, урок, полученный здесь:

  • Очистите большую базу данных перед запуском Respawn Reset или установите для свойства CommandTimeout класса Checkout более высокое значение.

Я думаю, что Respawn может вернуть лучшее сообщение о том, что пошло не так в Reset, возможно, я отправлю запрос на извлечение для решения этой проблемы.

...