Pular para o conteúdo principal

Como mockar HttpClient em ASP.NET C#

Como tive dificuldade para mockar o HttpClient para fazer teste de unidade, vou postar as formas que encontrei para fazer tal tarefa. A primeira forma que encontrei para fazer isso está descrita no artigo C# - Unit testing classes with HttpClient dependence + using Autofixture.



Ela consiste em criar a sua própria classe HttpMessageHandler e HttpContent. Dessa maneira, você constroi o seu HttpClient com base nessas fake classes. Veja o código a seguir:


Para usar o HttpClient mockado, bastar fazer assim:


O método GenerateJsonArrayOfYourObjectString apenas transforma o objeto que você quer dar como retorno em um json em formato de string.

A segunda maneira que encontrei para mockar o HttpClient foi por meio da ferramenta MOQ. A fonte que explica como fazer isso se encontra no link Mocking an Asp.Net Core HttpClient for Unit Tests with Moq.

O código para realizar tal tarefa é o seguinte:



A classe MockHttpClient retorna um HttpClient mockado para você, mas para isso é preciso usar as using Moq e Moq.Protected.

No texto Unit Testing with the HttpClient você pode conferir 3 formas de mockar o HttpClient e, caso tenha interesse em entender mais sobre o framework Moq leia TDD : Introduction to Moq.



Comentários

Postagens mais visitadas deste blog

Curso Flutter | Aula 0 | Sobre o Curso

Fala galera! Me chamo Raul, tenho experiência com programação para Android usando Java e Kotlin. Como gostei bastante do novo SDK lançado pela Google para criar aplicativos para Android e iOS utilizando apenas um único código, resolvi aprender Flutter! Como sei que a melhor forma de aprender é ensinando, resolvi criar este curso. No exato momento em que escrevo esta postagem, ainda não sei nada de Flutter! Minha intenção é ir aprendendo e ir montando o curso à medida em que evoluo. Portanto, meu objetivo inicial aqui será organizar as ideias de como o curso será montado: quais tópicos serão abordado e por quais meios eles serão passados. O curso de Flutter a que proponho fazer será compartilhado gratuitamente de duas maneira: por este blog de maneira escrita e por vídeos no Youtube. Um meio complementará o outro. Além disso, o curso terá as seguintes aulas: Aula 1.0 - O que é e quais as características principais do Flutter? Aula 2.0 - Conhecendo a linguagem Dart Aul...

Cursos Gratuitos de Flutter e Dart

Aqui você encontrará um repositório de cursos de Flutter e Dart gratuitos. A maioria dos cursos são em inglês. Cheguei a encontrar cursos gratuitos de Flutter em alemão na udemy, mas preferi não colocar nesta lista. Caso tenha mais sugestões de cursos gratuitos, por favor, escreva nos comentários deste post, que em breve acrescentarei a lista. Vamos estudar Flutter galera! ;) Build Native Mobile Apps with Flutter by Google (inglês) https://www.udacity.com/course/ud905 Dart Academy Boot Camp (inglês) https://da-bootcamp.firebaseapp.com/?course=start_programming_dart The Complete Flutter App Development Course for Android, iOS (inglês) https://www.udemy.com/the-complete-flutter-app-development-course-for-android-ios/ Meu mini-curso (português) http://raulfmiranda.blogspot.com/2018/10/curso-flutter-sobre-curso.html   Flutter Crash Course (inglês) https://fluttercrashcourse.com/ Learn Flutter - Beginners Course (inglês) https://www.udemy.com/learn-flutter-be...

Curso Flutter | Aula 1 | O que é e quais as características principais do Flutter?

Fala Flutteriano! Estou de volta depois de quase vinte dias após eu ter escrito a aula 0 , que inclusive é o sumário deste curso. Hoje iremos aprender o que é o Flutter e quais as suas características. Mas então, o que é Flutter? No site oficial, temos a seguinte definição: "O Flutter é o SDK de aplicativos para dispositivos móveis do Google para criar interfaces nativas de alta qualidade no iOS e Android em tempo recorde. O Flutter funciona com código existente, é usado por desenvolvedores e organizações em todo o mundo e é gratuito e de código aberto.". Quando você cria aplicativos usando Java ou Kotlin na IDE Android Studio, você criar aplicativos nativos, mas que rodam apenas no Android. Ou seja, se você quiser criar o mesmo aplicativo para o iOS da Apple, você teria que desenvolver um novo app do zero, usando Objective-C ou Swift com a IDE XCode. Para contornar esse problema, existem diversos frameworks no mercado em que é possível escrever um único código (às vez...