Este é um post disponível para assinantes MVPVocê também pode acessá-lo através de Créditos DevMedia. Clique aqui para saber mais!
Video: Iniciando teste dos Controllers - Curso ASP.NET MVC - Sistema de Vestibular - Parte 55
Nessa videoaula mostraremos como funciona o processo de teste dos controllers, iniciando pelo teste de um controller que retorna um view result.
[fechar]
Você não gostou da qualidade deste conteúdo?
(opcional) Você gostaria de comentar o que não lhe agradou?
Tempo: 18:22 min
Mini Resumo: Nessa videoaula mostraremos como funciona o processo de teste dos controllers, iniciando pelo teste de um controller que retorna um view result. Primeiramente mostraremos como preparar o ambiente, implementando qualquer dependência que se faça necessária para o controller, para na sequência implementar as ações e por fim as assertivas necessárias para garantir o funcionamento de nossa action.
Exemplos construídos: Teste da action Index do controller Vestibular.
Tecnologias e Recursos: Visual Studio 2010, ASP.NET MVC 3, Razor, Repository, Mock, Test, Injeção de Dependência, IOC
Henrylle Maia é Desenvolvedor .NET trabalhando na tecnologia desde 2005. É um profissional certificado MCP(70-480), da nova linha de certificações da Microsoft. Atualmente trabalha em projetos ágeis usando o XP como metodologia. Como ferramenta usa o Visual Studio 2012 e TFS 2012, usando como lingua...
O que você achou deste post?
4 COMENTÁRIOS
Jairo Franco Lima Gomes
O nível do curso continua excelente. A didática e a objetividade do Henrylle realmente são muito boas.
[há +1 mês] -
Responder
[autor]
Henrylle Da Silva Maia
Muito obrigado Jairo. Fico feliz em saber que a didática está ajudando =).
Continue acompanhando.
Continue acompanhando.
[há +1 mês] -
Responder
Cenisio
Meu teste VestibularControllerTest está falhando... fiz e refiz exatamente como explicado pelo Henrylle, mas o teste dá erro quando chega aqui: Assert.IsNotNull(result.Model) Porque o result está retornando null. Onde pode estar o erro?
Result Message:
Test method SisVest.Test.Controllers.VestibularControllerTest.Pode_Retornar_Todos_Vestibulares_Action_Index_Text threw exception:
System.NullReferenceException: Referência de objeto não definida para uma instância de um objeto.
Código do teste:
[TestInitialize]
public void TestInitialize()
{
mockVestibular = new Mock<IVestibularRepository>();
mockVestibular.Setup(a => a.Vestibulares).Returns(new[]
{
new Vestibular
{
iVestibularId = 1,
sDescricao = "Vestibular 2012.1",
dtInicioInscricao = new DateTime(2012,01,01),
dtFimInscricao = new DateTime(2012,01,31),
dtProva = new DateTime(2012,03,01)
},
new Vestibular
{
iVestibularId = 2,
sDescricao = "Vestibular 2012.2",
dtInicioInscricao = new DateTime(2012,07,01),
dtFimInscricao = new DateTime(2012,07,31),
dtProva = new DateTime(2012,09,01)
}
}.AsQueryable);
vestibularController = new VestibularController(mockVestibular.Object, null);
}
[TestMethod]
public void
Pode_Retornar_Todos_Vestibulares_Action_Index_Text()
{
//Ação
var result = vestibularController.Index() as ViewResult;
//Assertivas
Assert.IsNotNull(result.Model);
Assert.IsInstanceOfType(result.Model, typeof(List<Vestibular>));
Assert.AreEqual(2, ((List<Vestibular>)result.Model).Count);
Assert.AreEqual("Vestibular 2012.2",
((List<Vestibular>)result.Model).Where(v => v.iVestibularId == 1).FirstOrDefault().sDescricao);
}
Result Message:
Test method SisVest.Test.Controllers.VestibularControllerTest.Pode_Retornar_Todos_Vestibulares_Action_Index_Text threw exception:
System.NullReferenceException: Referência de objeto não definida para uma instância de um objeto.
Código do teste:
[TestInitialize]
public void TestInitialize()
{
mockVestibular = new Mock<IVestibularRepository>();
mockVestibular.Setup(a => a.Vestibulares).Returns(new[]
{
new Vestibular
{
iVestibularId = 1,
sDescricao = "Vestibular 2012.1",
dtInicioInscricao = new DateTime(2012,01,01),
dtFimInscricao = new DateTime(2012,01,31),
dtProva = new DateTime(2012,03,01)
},
new Vestibular
{
iVestibularId = 2,
sDescricao = "Vestibular 2012.2",
dtInicioInscricao = new DateTime(2012,07,01),
dtFimInscricao = new DateTime(2012,07,31),
dtProva = new DateTime(2012,09,01)
}
}.AsQueryable);
vestibularController = new VestibularController(mockVestibular.Object, null);
}
[TestMethod]
public void
Pode_Retornar_Todos_Vestibulares_Action_Index_Text()
{
//Ação
var result = vestibularController.Index() as ViewResult;
//Assertivas
Assert.IsNotNull(result.Model);
Assert.IsInstanceOfType(result.Model, typeof(List<Vestibular>));
Assert.AreEqual(2, ((List<Vestibular>)result.Model).Count);
Assert.AreEqual("Vestibular 2012.2",
((List<Vestibular>)result.Model).Where(v => v.iVestibularId == 1).FirstOrDefault().sDescricao);
}
[há +1 mês] -
Responder
[autor]
Henrylle Da Silva Maia
Olá Cenisio,
Tudo bem?!
Você já tentou debugar e ver qual parte do código de sua action está sendo executado durante a execução do teste?
Coloca um breakpoint na linha que executa a "//Ação" do seu teste e verifica.
Tudo bem?!
Você já tentou debugar e ver qual parte do código de sua action está sendo executado durante a execução do teste?
Coloca um breakpoint na linha que executa a "//Ação" do seu teste e verifica.
[há +1 mês] -
Responder
Cursos relacionados
Publicidade

download

