Thiago Luna de Melo
Criador Thiago Luna de Melo 14/01/2022

Olá, Mestre!

public function newCompany(array $params = [])
{
   $response = $this->http->post($this->url . '/companies', $params);
   return $this->defaultResponse->response($response);
}

Nesse método acima visto nessa aula, como testar se o retorno do cadastro de Companies deu status 201 e retornou um array data[ ] ?

Ou, como posso testar se o retorno do cadastro deu status 422 com mensagem name is required?

OBS.: Os testes rodando no CI do github não conseguem se conectar ao endpoint. Tem como chamar esse método newCompany( ) no teste e mockar o resultado do $response?

Manager Carlos Ferreira 14/01/2022

Olá, Thiago!
Tudo bem?

Esse teste aí não é de unidade, porque você usa um agente externo, como uma request http e etc.

Para ser um teste de unidade vc precisa criar mock destes agentes externos.

A partir do momento que precisa integrar algo, você já parte para um teste de integração (aqui sim pode usar um agente externo - como outra classe e etc).

----

Você vai precisar criar um mock dessa request, sugiro usar o Mockery, uso ele e acho super simples: http://docs.mockery.io/en/latest/reference/creating_test_doubles.html

Se tiver dúvida como criar o mock, compartilha comigo mais detalhes do código que te dou uma força amigo.

Carlos Ferreira
Criador Thiago Luna de Melo 14/01/2022

Entendi. Olhei o Mockery e achei bem interessante, mas acabei utilizando o Http::fake e deu certo.

Com ele, consigo criar o mock da request.

Http::fake([ $url => Http::response([ "error" => "UNAUTHORIZED" ], 403) ]);

Obrigado!

Thiago Luna de Melo
Sabe a Solução? Ajude a resolver!

Precisa estar logado para conseguir responder a este ticket!

Clique Aqui Para Entrar!