[{"data":1,"prerenderedAt":141},["ShallowReactive",2],{"\u002Fpt\u002Fblog\u002Ftemporary-email-api-testing-guide":3,"\u002Fpt\u002Fblog\u002Ftemporary-email-api-testing-guide-surround":130},{"id":4,"title":5,"authors":6,"badge":12,"body":14,"contentQuality":112,"date":116,"description":117,"extension":118,"image":119,"indexable":121,"locale":122,"meta":123,"navigation":121,"path":124,"reviewedBy":125,"seo":126,"stem":127,"updated":128,"__hash__":129},"postsPt\u002Fpt\u002Fblog\u002F19.temporary-email-api-testing-guide.md","Como usar uma API de e-mail temporário sem criar testes instáveis",[7],{"name":8,"to":9,"avatar":10},"Equipe de engenharia do Once Email","\u002Fpt\u002Fabout",{"src":11},"\u002Fimages\u002Fauthors\u002Fdefault-cartoon-author-v2.webp",{"label":13},"Automação de testes",{"type":15,"value":16,"toc":101},"minimark",[17,26,31,34,37,41,44,47,51,54,57,61,64,67,71,78,87,91,94,98],[18,19,20,21,25],"p",{},"E-mail não é uma chamada síncrona. O sistema em teste pode enfileirar uma tarefa, o provedor pode atrasar a entrega e filtros podem mudar a ordem. Um teste estável precisa modelar essas etapas em vez de usar ",[22,23,24],"code",{},"sleep"," fixo.",[27,28,30],"h2",{"id":29},"uma-caixa-por-caso","Uma caixa por caso",[18,32,33],{},"Crie uma caixa isolada para cada execução ou cenário. Não compartilhe endereço entre jobs paralelos. Registre o identificador da caixa apenas no contexto temporário do teste e nunca publique chave de API ou token em logs.",[18,35,36],{},"Use dados sintéticos e um identificador de correlação não secreto no evento. A caixa não deve receber dados reais de cliente, senha ou documento.",[27,38,40],{"id":39},"consulta-com-orçamento","Consulta com orçamento",[18,42,43],{},"Depois de disparar a ação, consulte a lista com intervalo crescente e limite total. Por exemplo, espere poucos segundos entre as primeiras tentativas e aumente gradualmente, respeitando o limite de requisições. Encerre com erro claro quando o orçamento acabar.",[18,45,46],{},"Não faça loop infinito e não crie outra caixa a cada consulta. Criação e troca consomem a quota própria; mensagens recebidas seguem contrato separado. Os valores devem vir da configuração e resposta da API, não de números espalhados no teste.",[27,48,50],{"id":49},"selecione-a-mensagem-correta","Selecione a mensagem correta",[18,52,53],{},"Correlacione por destinatário, tipo de evento, identificador seguro e horário posterior à solicitação. Assunto sozinho é insuficiente. Se houver duplicata, registre o comportamento esperado e não aceite arbitrariamente a primeira.",[18,55,56],{},"Valide texto, HTML, idioma, links e expiração sem imprimir segredos. O código de uso único pode ser comparado em memória e redigido imediatamente.",[27,58,60],{"id":59},"erros-e-idempotência","Erros e idempotência",[18,62,63],{},"Teste respostas 400, 401, 403, 404 e 429 conforme o contrato. Uma repetição depois de timeout não deve criar caixas indefinidamente. Use chave idempotente quando a API oferecer essa capacidade e trate limites como resultado esperado, não falha de infraestrutura.",[18,65,66],{},"A documentação pública deve indicar autenticação, quota e retenção antes da abertura comercial. Não construa dependência de um endpoint descrito como candidato até existir versão estável.",[27,68,70],{"id":69},"limpeza-determinística","Limpeza determinística",[18,72,73,74,77],{},"Coloque a exclusão da caixa em ",[22,75,76],{},"finally",", inclusive quando a asserção falhar. Defina timeout para a própria limpeza e registre somente o resultado. Artefatos de CI devem expirar e não conter corpo da mensagem.",[18,79,80,81,86],{},"A ",[82,83,85],"a",{"href":84},"\u002Fpt\u002Fblog\u002Femail-testing-checklist","checklist de testes de e-mail"," cobre apresentação e acessibilidade; este padrão cobre orquestração. Juntos, eles tornam a falha localizável sem esconder a natureza assíncrona do transporte.",[27,88,90],{"id":89},"métricas-úteis","Métricas úteis",[18,92,93],{},"Meça tempo entre solicitação e primeira observação, número de consultas e taxa de timeout por ambiente. Não publique endereços ou conteúdo. Tendências agregadas ajudam a ajustar orçamento sem transformar uma execução lenta em espera permanente.",[27,95,97],{"id":96},"contrato-de-configuração","Contrato de configuração",[18,99,100],{},"Mantenha quota mensal, limite por minuto, duração e máximo de consultas em configuração versionada. O teste pode receber valores diferentes por ambiente, mas deve registrar qual contrato aplicou. Não use “ilimitado” para criações quando existe uma franquia; diferencie explicitamente operações de caixa de mensagens recebidas. Essa separação evita cobrança inesperada e asserções incompatíveis com produção.",{"title":102,"searchDepth":103,"depth":103,"links":104},"",2,[105,106,107,108,109,110,111],{"id":29,"depth":103,"text":30},{"id":39,"depth":103,"text":40},{"id":49,"depth":103,"text":50},{"id":59,"depth":103,"text":60},{"id":69,"depth":103,"text":70},{"id":89,"depth":103,"text":90},{"id":96,"depth":103,"text":97},{"originalAnalysis":113,"trendContext":114,"practicalValue":115},"Modelamos o e-mail como sistema assíncrono e separamos criação, espera, seleção, validação e limpeza para eliminar dependências compartilhadas.","Suites CI paralelas e provedores com filas variáveis fazem esperas fixas e caixas reutilizadas falharem de forma intermitente.","A equipe obtém um padrão de consulta com orçamento, correlação sem segredos e limites de quota adaptável à própria API.","2026-08-07","Projete testes com caixas isoladas, consultas limitadas, tempo máximo, correlação segura e limpeza determinística.","md",{"src":120},"\u002Fimages\u002Fblog\u002Ftemporary-email-api-testing-guide-cover.webp",true,"pt",{},"\u002Fpt\u002Fblog\u002Ftemporary-email-api-testing-guide","Revisão editorial do Once Email",{"title":5,"description":117},"pt\u002Fblog\u002F19.temporary-email-api-testing-guide","2026-08-09","ySCwpixLuzVbfyjEukPNhDl4u7MhUQJt48L17LjDvdU",[131,136],{"title":132,"path":133,"stem":134,"description":135,"children":-1},"Códigos de verificação por e-mail: como copiar, conferir e usar com segurança","\u002Fpt\u002Fblog\u002Femail-verification-code-safety","pt\u002Fblog\u002F18.email-verification-code-safety","Um processo para lidar com códigos de uso único sem compartilhá-los, confundir mensagens antigas nem deixar segredos no portapapéis.",{"title":137,"path":138,"stem":139,"description":140,"children":-1},"O e-mail de verificação não chegou? Diagnóstico seguro passo a passo","\u002Fpt\u002Fblog\u002Fanxiety","pt\u002Fblog\u002F2.anxiety","Uma ordem de verificação para localizar uma mensagem atrasada sem pedir códigos repetidamente nem expor informações sensíveis.",1786218432937]