Olá, tudo bem com vocês?
Primeiramente gostaria de agradecer os conhecimentos compartilhados, mas fiquei cm uma pulga atrás da orelha aqui com alguns testes que realizei, conforme detalhei abaixo:
Estava realizando alguns testes e aparentemente esse teste do TimerWidget não está correto.
A forma correta de utilizar o tester.runAsync é declarando com await no início (Mesmo porque ele é do tupo Future), caso contrário ele irá retornar o teste como executado cm sucesso e apenas depois irá realizar as asserções. Com o await ele executa primeiro. Segue exemplo:
Caso sem await:
Note que o teste foi executado com sucesso, porém o console acusa que nenhum Widget com o texto "00:10" foi encontrado.
Caso com o await:
Note que agora sim, o teste falhou por não ter encontrado o Widget com texto "00:10".
Acredito que pelo fato de o método start estar sendo mockado, o timer não inicializa de fato.
Outro teste que realizei sem mock, o timer inicializou corretamente:
caso sem mock:
Note que, nesse caso, o timer foi incializado e o display foi atualizado de forma correta e exibiu o texto "00:10", após uma espera de 10 segundos.
Porém o teste só se comporta conforma esperado sem o Provider e sem o mock dos métodos.
O raciocínio procede ou será que cometi algum erro na implementação?