0Pricing
Dart Academy · Aula

Testando Código assíncrono e Streams

Aguarde futuros e verifique sequências de eventos.

Testando Código assíncrono e Streams é uma aula grátis de Dart Academy no CoddyKit. Esta é a aula 3 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de Dart Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Dart Academy inclui 4 aulas no total.

O código assíncrono exige atenção

Muito código real retorna um Future. Se um teste esquecer de esperar, ele poderá passar antes mesmo de o trabalho terminar. ⏳

Retornar ou usar await

O executor espera quando o corpo do teste é async e você usa await no trabalho, ou quando retorna o Future diretamente.

test('loads user', () async {
  final u = await fetchUser();
  expect(u.name, 'Ada');
});

expectLater para Futures

Use expectLater quando o valor verificado for um Future, por exemplo, ao conferir se um Future é concluído com determinado resultado.

await expectLater(fetchValue(), completion(42));

O matcher completion

O matcher completion passa quando um Future termina com sucesso e seu valor corresponde ao matcher interno.

expectLater(load(), completion(isNotEmpty));

Esperar erros assíncronos

Para verificar se um Future falha, combine expectLater com throwsA, garantindo que o teste confirme o erro correto.

await expectLater(
  risky(), throwsA(isA<StateError>()));

Streams emitem muitos valores

Um Stream envia uma sequência de eventos ao longo do tempo. Testá-lo significa verificar toda essa sequência, na ordem correta.

O matcher emits

Use emits para verificar o próximo valor produzido por um stream e emitsInOrder para verificar uma sequência esperada.

await expectLater(
  counter, emitsInOrder([1, 2, 3]));

Sinalizar o fim

O matcher emitsDone verifica se um stream é fechado quando esperado, detectando streams que nunca terminam.

expectLater(ticks, emitsThrough(emitsDone));

Streams também produzem erros

Combine matchers com emitsError para esperar um erro em um stream, verificando se as falhas chegam como eventos.

emitsInOrder([1, emitsError(isException)]);

Cuidado com falsos sucessos

Um erro comum: esquecer await faz o teste terminar cedo e passar silenciosamente. Sempre use await ou retorne o trabalho assíncrono.

Os tempos limite ajudam

Se o código assíncrono travar, o executor o interromperá. Você pode ajustar a espera usando um timeout em um teste lento.

test('slow', () async { /* ... */ },
  timeout: Timeout(Duration(seconds: 5)));

Verificação rápida

Como verificar se um stream emite 1, 2 e 3 nessa ordem?

Recapitulação

Você usou await com Futures, utilizou expectLater com completion e throwsA e verificou streams com matchers emits. Código assíncrono testado com confiança. 🌊

Perguntas Frequentes

A aula “Testando Código assíncrono e Streams” é grátis?

Sim — o texto completo de “Testando Código assíncrono e Streams” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de Dart Academy, atualize para CoddyKit PRO. O curso de Dart Academy inclui 4 aulas no total.

O que vou aprender em “Testando Código assíncrono e Streams”?

Aguarde futuros e verifique sequências de eventos. Você pratica Dart Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.

Preciso ter experiência prévia para começar Dart Academy?

Nenhuma experiência prévia é necessária. Dart Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 3 de 4.

Quanto tempo leva a aula “Testando Código assíncrono e Streams”?

A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.

Posso escrever e executar código nesta aula de Dart Academy?

Sim. Cada aula de Dart Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.

Todas as aulas deste curso

  1. Seu Primeiro test e expect
  2. group, setUp e tearDown
  3. Testando Código assíncrono e Streams
  4. Mocks, Fakes e Cobertura
← Voltar para Dart Academy