En EF5 se ha introducido un nuevo concepto, llamado Migraciones. Probablemente solía usar algo similar en las aplicaciones Rails o Django.
La migración es una clase que tiene varias funciones para actualizar/reducir la versión de la base de datos.
public partial class VoteTime : DbMigration
{
public override void Up()
{
AddColumn("Votes", "Time", c => c.DateTime(nullable:false, defaultValue:DateTime.UtcNow));
}
public override void Down()
{
DropColumn("Votes", "Time");
}
}
También, tiene que configurar DbContext y clases de configuración DbMigrationsConfiguration a permitir que el código primer acercamiento al trabajo.
Para propósitos de prueba que necesita para introducir, TestDatabaseInitilizer
public class TestDatabaseInitilizer : DropCreateDatabaseAlways<DbContext>
{
}
Sería responsable de la inicialización de la base de datos de prueba para las pruebas unitarias.
Finalmente, debe diseñar su código de prueba para configurar el contexto.
public class SomeRepositoryTests
{
private DbContext _context;
[SetUp]
public void Setup()
{
Database.SetInitializer(new TestDatabaseInitilizer());
_context = new DbContext("TestContext");
_repository = new SomeRepository(_context);
}
[Test]
public void should_return_some_entities()
{
Assert.That(_repository.Get(), Is.Not.Null);
}
}
El código de configuración podría moverse a la clase base, si es necesario.
Solo sabía que @LadislavMnrka estaría en todo esto. :) –
Creo que [AutoFixture] (https://github.com/AutoFixture/AutoFixture) está lejos de ser la solución que está buscando, pero es lo más parecido que puedo encontrar a la automatización de accesorios para EF. –
no exactamente, EF permite la reinicialización de la base de datos (la crea nuevamente, posiblemente agrega datos, etc.), pero esto no está adjuntado a ningún marco de prueba, todo se hace cuando reinicia la aplicación en Visual Studio. Sin embargo, puede llamar a estos métodos de inicialización también desde su marco de prueba si desea –