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.
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
Postar um comentário