Модульное тестирование - один и тот же dbContext с разными макетами конфигурации типов сущностей - PullRequest
0 голосов
/ 04 декабря 2018

Я использую Entity Framework Effort для создания модульных тестов вокруг моего DbContext (EF6).Однако некоторые свойства моих сущностей вычисляются в базе данных, и Effort устанавливает их значение равным нулю, когда я вызываю SaveChanges (), даже если я ранее присвоил им какое-то значение.

Для решения этой проблемыЯ создал несколько макетов для EntityTypeConfiguration тех сущностей, где я просто удаляю «HasDatabaseGeneratedOption».

Проблема, с которой я сейчас имею дело, заключается в том, что если у меня два [TestClass], использующих один и тот же DbContext,OnModelCreating () срабатывает только один раз.

Возьмем этот код, например:

[TestClass]
public class TestA
{
    private DbContext context;

    [TestMethod]
    public void A()
    {
        context.Users.Add(new User());
        context.SaveChanges();
    }

    [TestInitialize]
    public void Initialize()
    {
        context = new DbContext(new EntityTypeConfigurationMockA());
    }
}

[TestClass]
public class TestB
{
    private DbContext context;

    [TestMethod]
    public void B()
    {
        context.Users.Add(new User());
        context.SaveChanges();
    }

    [TestInitialize]
    public void Initialize()
    {
        context = new DbContext(new EntityTypeConfigurationMockB());
    }
}

Первый тестовый класс, который должен быть выполнен, - это тот, который определяет, будет ли мой DbContext применять EntityTypeConfigurationMockA или EntityTypeConfigurationMockB в методе OnModelCreating ().

Есть идеи, почему это происходит?

Я мог бы создать новый класс DbContext, производный от моего основного DbContext, и создать открытый метод, который будет вызывать OnModelCreating (), но мне было интересно, есть ли другой способ решить эту проблему.Я пытался использовать DbContext в каждом тестовом классе, но это не сработало.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...