3
respostas

Stubs, como usar?

Não entendi direito, os testes dos outros pararam de funcionar porque precisa de stub, mas é porque precisa de outra instancia do mockHttp? Por exemplo, é só adicionar o when? Eu testei um a um e no final apareceu isso:

══╡ EXCEPTION CAUGHT BY FLUTTER TEST FRAMEWORK ╞════════════════════════════════════════════════════ The following TestFailure was thrown running a test: Expected: <1> Actual: <7> Unexpected number of calls

testWidgets('When tap Deposit should upload earned in 10', (tester) async {
 when(httpMock.dolarToReal()).thenAnswer((_) async => ('10')); // adicionado
    //constrói a tela que será testada
    await tester.pumpWidget(MaterialApp(
      home: BankInherited(
        child: Home(api: httpMock.dolarToReal()),
      ),
    ));
    await tester.tap(find.text('Deposit'));//ao fazer o tap muda para 10
    await tester.tap(find.text('Earned'));

    await tester.pumpAndSettle();// obrigatório para atualizar a tela

    expect(find.text('\$10.0'), findsOneWidget);//verifica se tem o valor 10
  });
3 respostas

Bom dia Gisele!

Então esse erro:

══╡ EXCEPTION CAUGHT BY FLUTTER TEST FRAMEWORK ╞════════════════════════════════════════════════════ The following TestFailure was thrown running a test: Expected: <1> Actual: <7> Unexpected number of calls

ta dizendo que uma função foi chamada 7 vezes

enquanto que no codigo que você mostrou ele esta esperando pelo widget com o texto "10"

 expect(find.text('\$10.0'), findsOneWidget);//verifica se tem o valor 10

Então ou o erro é de outro código, ou ele encontrou 7 widgets com o valor 10 na tela.

Pode mandar o código completo?

O que pode ter acontecido é na verificação da call do httpMock, ele é de fato chamado uma vez em cada teste, então quando você usa o Mock e testa cada um deles por vez, ele é chamado diversas vezes, é importante se atentar a isso.

Gisele, um dos nossos alunos deu uma explicação legal sobre esse problema também!

Da uma olhadinha aqui: https://cursos.alura.com.br/forum/topico-sugestao-usando-o-metodo-setup-dos-testes-258798

Vou ler o post, segue o link do repositório:

https://github.com/giseletoledo/alura_flutter_curso_testes/blob/main/test/home_test.dart

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software