#c# #entity-framework #integration-testing
#c# #entity-framework #интеграция-тестирование
Вопрос:
В настоящее время я разрабатываю небольшой инструмент для выполнения интеграционных тестов с базой данных, сначала используя код Entity Framework.
Но проблема в том, что мой начальный метод не выполняется при создании базы данных.
Инструмент написан так, что при каждом тестировании база данных удаляется и создается заново.
Прежде всего, у меня есть контекст, в котором выполняются мои тесты:
public class IntegrationArrangeActAssert<T> : ArrangeActAssert where T : DbContext
{
#region Properties
protected T context { get; set; }
#endregion
#region ArrangeActAssert Members
/// <summary>
/// Set up the current state of the specs context.
/// </summary>
protected override void Arrange()
{
Database.SetInitializer(new DropCreateDatabaseAlways<T>());
context.Database.Initialize(true);
base.Arrange();
}
#endregion
}
Затем мой класс, который содержит мой модульный тест, просто наследует от этого класса.
Теперь, когда я запускаю модульный тест, начальный метод в конфигурации T не выполняется. База данных создана, миграции выполнены, но я просто не получаю никаких данных в своей базе данных.
Это довольно важная часть для запуска интеграционных тестов.
Любой, кто знает, почему начальный метод не работает?
Комментарии:
1. вы здесь что-то упускаете. Вы устанавливаете DropCreateDatabaseAlways, который является частью Entity Framework. Почему вы ожидаете, что Seed() класса DropCreateDatabaseAlways() будет заполнять какие-либо данные? Это не так. Напишите свой собственный инициализатор, наследующий от DropCreateDatabaseAlways и переопределите Seed() .
2. Спасибо. Я думал, что это что-то простое. Не понимаю, почему я сам этого не нашел.