Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

[Sugestão] Usando o método setUp dos testes

Como você mencionou que teria que modificar o último teste pois agora o método dolarToReal() está sendo chamado 6 vezes. De fato está, é porque estamos utilizando a mesma instancia em todos os testes.

Acredito que não é a melhor maneira pois os testes irão ficar dependentes um dos outros.

A minha sugestão é continuar usando a mesma referência da variável httpMock, mas ao invés de declará-la como final e instancia-la no inicio, a modificação sugerida é usar o método setUp para instanciar ela a cada teste.

late MockBankHttp httpMock;

setUp(() {
    httpMock = MockBankHttp();
});

Deste modo é possivel garantir que o primeiro comportamento colocado no teste deverificar a quantidade de vezes que o dolarToReal() foi chamado.

testWidgets('testing MockHttp dolarToReal', (tester) async {
    when(httpMock.dolarToReal()).thenAnswer((_) async => '5');

    await tester.pumpWidget(
      MaterialApp(
        home: BankInherited(
          child: Home(
            api: httpMock.dolarToReal(),
          ),
        ),
      ),
    );

    verify(httpMock.dolarToReal()).called(1);
  });

Por fim, todos os testes rodam em grupo ou isoladamente.

2 respostas
solução!

Fala Rodrigo, de boa ?

Cara excelente sugestão, acredito que o instrutor não usou isso no momento pra não precisar colocar muita coisa nova de uma vez só, mas o que tu disse/fez faz muito sentido.

Perfeito Rodrigo! Adorei, é isso mesmo!

Vou até compartihar sua solução com uma aluna que perguntou exatamente isso!