Я использую этот учебник, чтобы подделать мой 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);
}
Я все делаю правильно?