Поддельный DbContext из Entity Framework 4.1 для тестирования

Я использую этот учебник, чтобы подделать мой DbContext и протестировать: http://refactorthis.wordpress.com/2011/05/31/mock-faking-dbcontext-in-entity-framework-4-1-with-a-generic-repository/

Но я должен изменить реализация FakeMainModuleContext для использования в моих Контроллерах:

public class FakeQuestiona2011Context : IQuestiona2011Context
{
    private IDbSet _credencial;
    private IDbSet _perfil;
    private IDbSet _apurador;
    private IDbSet _entrevistado;
    private IDbSet _setor;
    private IDbSet _secretaria;
    private IDbSet _pesquisa;
    private IDbSet _pergunta;
    private IDbSet _resposta;

    public IDbSet Credencial { get { return _credencial ?? (_credencial = new FakeDbSet()); } set { } }
    public IDbSet Perfil { get { return _perfil ?? (_perfil = new FakeDbSet()); } set { } }
    public IDbSet Apurador { get { return _apurador ?? (_apurador = new FakeDbSet()); } set { } }
    public IDbSet Entrevistado { get { return _entrevistado ?? (_entrevistado = new FakeDbSet()); } set { } }
    public IDbSet Setor { get { return _setor ?? (_setor = new FakeDbSet()); } set { } }
    public IDbSet Secretaria { get { return _secretaria ?? (_secretaria = new FakeDbSet()); } set { } }
    public IDbSet Pesquisa { get { return _pesquisa ?? (_pesquisa = new FakeDbSet()); } set { } }
    public IDbSet Pergunta { get { return _pergunta ?? (_pergunta = new FakeDbSet()); } set { } }
    public IDbSet Resposta { get { return _resposta ?? (_resposta = new FakeDbSet()); } set { } }

    public void SaveChanges()
    {
        // do nothing (probably set a variable as saved for testing)
    }
}

И мой тест вроде этого:

[TestMethod]
public void IndexTest()
{
    IQuestiona2011Context fakeContext = new FakeQuestiona2011Context();
    var mockAuthenticationService = new Mock();

    var apuradores = new List
    {
        new Apurador() { Matricula = "1234", Nome = "Acaz Souza Pereira", Email = "acaz@telecom.inf.br", Ramal = "1234" },
        new Apurador() { Matricula = "4321", Nome = "Samla Souza Pereira", Email = "samla@telecom.inf.br", Ramal = "4321" },
        new Apurador() { Matricula = "4213", Nome = "Valderli Souza Pereira", Email = "valderli@telecom.inf.br", Ramal = "4213" }
    };
    apuradores.ForEach(apurador => fakeContext.Apurador.Add(apurador));

    ApuradorController apuradorController = new ApuradorController(fakeContext, mockAuthenticationService.Object);
    ActionResult actionResult = apuradorController.Index();

    Assert.IsNotNull(actionResult);
    Assert.IsInstanceOfType(actionResult, typeof(ViewResult));

    ViewResult viewResult = (ViewResult)actionResult;

    Assert.IsInstanceOfType(viewResult.ViewData.Model, typeof(IndexViewModel));

    IndexViewModel indexViewModel = (IndexViewModel)viewResult.ViewData.Model;

    Assert.AreEqual(3, indexViewModel.Apuradores.Count);
}

Я все делаю правильно?

46
задан Acaz Souza 1 August 2011 в 20:36
поделиться