2013-11-30 3 views
0

Я работаю над проектом, где я хочу протестировать некоторые классы, которые используют сущность framework. В этом процессе я создал тестовый DbContext.Проблемы с тестированием с инфраструктурой Entity и DbContext

class FakeContext : DbContext, IDbContext 
{ 
    public IDbSet<UserAcc> UserAcc { set; get; } 
    public IDbSet<Movies> Movies { set; get; } 

    public new IDbSet<T> Set<T>() where T : class 
    { 
     return base.Set<T>(); 
    } 
} 

[TestClass] 
public class EFStorageTest 
{ 
    private IStorageConnection _ef; 

    [TestMethod] 
    public void AddToContextTest() 
    { 
     _ef = new EFConnectionFactory().GetConnection<FakeContext>(); 
     _ef.Add(new UserAcc()); 
     _ef.SaveChanges(); 
     Assert.AreEqual(1, _ef.Get<UserAcc>().Count()); 
    } 
} 

Когда я пытался добавить объект в моем контексте, я предположил, что он будет оставаться в памяти, но это время автоматически сохраняется где-то в Visual Studio. Где находится автоматически созданная база данных?

ответ

0

По умолчанию EF создает базу данных на языке SQL Express с именем, равным полному имени класса данных данных. То есть в вашем случае это будет

server=.\SQLEXPRESS;database=Your.Namespace.FakeContext 

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

+1

Спасибо :-) На самом деле это довольно круто – cholewa1992

Смежные вопросы