Testes Unitários Gateway
[Finalizado Pelo Aluno]
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?
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.
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!
Precisa estar logado para conseguir responder a este ticket!
Clique Aqui Para Entrar!