Я использую 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 в каждом тестовом классе, но это не сработало.