Testando suas classes com FluentAssertions

Como as coisas andam corridas ultimamente e não tive tempo para continuar com os estudos/posts sobre o novo asp.net 5, que na verdade agora chama-se ASP.NET Core 1.0 (mas isso é assunto para outro post. Caso queira saber mais, confira este post do Scott Hanselman), resolvi criar um post rápido falando sobre o FluentAssertions. O FluentAssertions é um conjunto de extension methods que, segundo o site oficial diz, permite especificar de maneira mais natural o resultado esperado de um teste no estilo TDD/BDD. Para saber se você pode utilizar ou não o FluentAssertions, segundo o próprio site deles, este pacote possui suporte para as seguintes versões do .net framework:
Continuar lendo

Começando com ASP.NET 5 – Adicionando novos projetos e testes com xunit

Bom, agora que já entendemos um pouco do ambiente do asp.net 5, configuramos o necessário, etc., vamos começar a desenvolver o nosso projeto efetivamente. Como a missão principal destes posts e do que está sendo desenvolvido é o asp.net 5, não se preocupem muito com a arquitetura. Afinal, se não fosse para entendermos como está o novo ambiente, bastaria criarmos um projeto através do visual studio 2015 que já teríamos mais do que temos agora. Acredito que o mais importante ao começarmos com uma tecnologia nova, ou como no nosso caso, uma nova versão da tecnologia, o mais importante é entender como funciona, quais são as idéias por trás do que estamos estudando, etc. Como o nosso sistema é sobre finanças pessoais, vamos começar pensando em nosso domínio. Para isso, vamos alterar um pouco da estrutura do nosso projeto. Até agora, estávamos utilizando a estrutura default gerada com o yeoman. Ou seja, tínhamos a pasta Finance e todo o código dentro desta pasta. Vamos passar a utilizar as paras src e test, como é o padrão gerado pelo Visual Studio 2015, e dentro da pasta src, adicionar as pastas dos projetos. Não precisamos de nenhuma ferramenta para isso, basta criarmos as pastas na mão. Crie as pastas src e test, e um arquivo chamado global.json:
Continuar lendo

Testando Controllers com Fluent MVC

Falar em testes de controller pode ser um pouco polêmico. O motivo é simples: nosso controller normalmente não deve fazer muita coisa, possuir regras de negócio, etc. Há quem defenda que controllers não devem possuir nenhum if, etc. Eu concordo em partes. Realmente, normalmente se há algo que precisa ser feito no controller, ele deverá possuir alguma dependência que fará o trabalho, e o controller no final do dia, vai acabar retornando apenas uma view, um json ou algo do tipo. Mas, deixando essa discussão de lado, quando e como eu devo testar o meu controller?
A primeira resposta é subjetiva. Quando você deve testar qualquer código varia da posição da pessoa que está escrevendo os testes. Há quem defenda que todo o código deve ser testado, há quem defenda que não é bem assim, e por ai vai. Eu parto do principio que se há chances de dar qualquer coisa de errado na execução de um trecho de código, teste! A segunda resposta é ampla, e neste post vou falar do Fluent MVC Testing.

Vamos começar pelo mais simples possível. Temos um controller que apenas retorna uma view:
Continuar lendo