[PROMOÇÃO] Assine com + 30% de desconto ANUAL MENSAL (últimas horas)
murilo
Criador murilo 02/07/2024

olá carlos , fiz aqui o curso de pest   .
tenho uma dúvida , quando você tem um projeto , e tem que testar um método por exemplo que cria produtos .
e neste método , existe um upload de imagem .

eu vi que existe uma forma de vc fazer um upload de imagem , no pest .
desta forma -

```

$data = [
'image' => new \Illuminate\Http\UploadedFile(public_path('/assets/images/1.jpg'), '1.jpg', null, null, true),
'nome' => 'notebook dell',
'codigo_do_produto' => 123
];
$response = postJson(config('app.url').'/api/product', $data);

```

assim, vc poderia testar , o método store pruduto , enviando a imagem .

outra opção , seria não enviar a imagem , 

la no metodo de criação de produtos , você poderia ter esta função -

$isTesting = env('IS_TESTING');


if(!
isTesting) {


}

 

Criador murilo 02/07/2024

 

 

 

$isTesting = env('IS_TESTING');
 


if(!
isTesting) {

 

    // cria o protuo 
}

 

 

murilo
Criador murilo 02/07/2024

oque vc costuma fazer ? quando o metodo existe upload de imagem , vc verifica  se estiver testando não envia imagem . ou vc envia a imagem também no teste ?

murilo
Manager Carlos Ferreira 02/07/2024

Olá, Murilo! Tudo bem?

 

Normalmente testes com upload de arquivos trabalho apenas em testes E2E:

$file = UploadedFile::fake()->image('avatar.jpg');

$data = [

'file' => $file,

];

 

postJson(url, data, headers);

Carlos Ferreira
Criador murilo 02/07/2024

então vc envia um arquivo ?
imagina um projeto que tem que para criação de produtos , tem que criar uma pasta com codigo pra este produto .
e dentro desta pasta vai as imagens do produto .
se eu for fazer o teste e enviar a imagem , ele vai criar a pasta e colocar as imagens dentro .
então , eu teria que fazer uma pasta pra teste , pra não misturar com a pasta que ja existe  .e depois do teste , deletar esta pasta e imagens que forma feitas o upload .
seria mais ou menos assim o processo ?

murilo
Manager Carlos Ferreira 02/07/2024

Exato, crio o arquivo e envio ele na request, simulando o comportamento do client.

 

Vc pode criar uma pasta separada para os testes, inclusive até delegar o arquivo/pasta no final dos testes (no beforeAll())

 

Em produção mesmo, o seus arquvios devem ficar em um serviço externo, como um S3 da Amazon, ou em um cloud storage da GCP.

Carlos Ferreira
Sabe a Solução? Ajude a resolver!

Precisa estar logado para conseguir responder a este ticket!

Clique Aqui Para Entrar!