Testes em C# com internal, private e protected (modificadores de acesso)

O uso de modificadores de acesso é extremamente importante para isolar e garantir a separação, organização e uso correto de nossas classes, métodos ou propriedades.

No C# existem diferentes modificadores de acesso:

  • public: acesso irrestrito.
  • protected: o acesso é limitado a classe ou a tipos que derivem da mesma classe.
  • internal: o acesso é limitado ao assembly.
  • protected internal: o acesso é limitado ao assembly, a própria classe ou a tipos derivados dela.
  • private: o acesso é limitado a própria classe.

Com isso, é muito comum em cenários de implementação de testes ter que acessar alguns objetos que estão protegidos, ou inacessíveis de acordo com os modificadores de acesso. Continue reading

Testes com Moq e Entity Framework Async (EF6)

O Entity Framework possui diversos recursos que facilitam o desenvolvimento, um dos recursos que considero muito importante é a possibilidade de realizar queries de maneira assíncrona (http://msdn.microsoft.com/en-us/data/jj819165.aspx). Escrevi um post mostrando algumas maneiras de implementar testes com Entity Framework (Testes com Moq e Entity Framework (EF6)).

A ideia deste post é mostrar como implementar testes em cenários de queries assíncronas, como no post anterior vou continuar utilizando Moq e terei como base o projeto que publiquei no GitHub: https://github.com/rodolfofadino/TestesComMoqEEntityFramework

Para começar, no LivroService.cs vou criar um método que chamará GetLivrosAtivosAsync, deixando a classe da seguinte maneira:

Continue reading

Testes com Moq e Entity Framework (EF6)

Recentemente estava implementando um projeto utilizando TDD, onde as principais regras de negócios se baseavam em consultas e filtros aplicados ao banco de dados, por exemplo: “retorna todos os descontos ativos (select * from descontos where status=1 and datafim>getdate()”.

Pensando em uma abordagem para garantir a implementação destas diversas regras, acabei optando por utilizar o Entity Framework (EF6) para o acesso aos dados e o Moq como framework de mock.

Moq

O Moq é um framework para mock extremamente poderoso, que ajuda a simular o comportamento e ações de objetos de uma maneira controlada. Com ele é possível simular o retorno de um método de um objeto, e ainda realizar diversos testes como quantidade de get ou set em uma determinada propriedade, ou até mesmo verificar quantas vezes determinado método do objeto foi chamado.

Continue reading

Testando rotas com o MVC Route/URL Generation Unit Tester

O ASP.NET MVC é um framework de desenvolvimento web extremamente poderoso, extensível e testável. Com diversas técnicas, é possível testar cada parte de nossas aplicações.

O roteamento (Routing) do ASP.NET MVC é uma das partes mais criticas de nossas aplicações, é nela que criamos as estruturas que definirão para quais actions, controlles e quais parâmetros serão acionados de acordo com as urls das requisições que chegam em nossas aplicações. Continue reading