Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Realizar testes com as dependências do projeto

Estou aplicando os conhecimento adquiridos no curso num projeto Flutter já existente, minha dúvida é como fazer para que o teste "carregue" todas as dependências dos widgets para poder executar.

Tenho o código de teste abaixo:

import 'package:flutter/material.dart';
import 'package:flutter_test/flutter_test.dart';
import 'package:vestter_mobile/main.dart';
import 'package:vestter_mobile/pages/login.page.dart';

void main() {
  testWidgets("Testando tela de login", (WidgetTester tester) async {
    await tester.pumpWidget(MyApp());
  });

  //Chamando a função responsável por teste de Widget
  testWidgets("Testando tela de login", (WidgetTester tester) async {
    tester.pumpWidget(MaterialApp(home: LoginPage()));
  });
}

Quando eu executo o teste recebo como resposta:

══╡ EXCEPTION CAUGHT BY WIDGETS LIBRARY ╞═══════════════════════════════════════════════════════════
The following assertion was thrown building Builder:
Object/factory with  type UserController is not registered inside GetIt.
(Did you accidentally do GetIt sl=GetIt.instance(); instead of GetIt sl=GetIt.instance;
Did you forget to register it?)
'package:get_it/get_it_impl.dart':
Failed assertion: line 316 pos 7: 'instanceFactory != null'

Creio que tal problema ocorrerá com vários pacotes, que nesse projeto são muitos.

1 resposta
solução!

Oi Fabricio, bom dia!

Tu acredita que eu respondi direitinho você ontem, mas meu pc desligou e não salvou? Fiquei fulo da vida...

Vamos lá!

O erro aconteceu porque ele recebeu um valor nulo e isso pode acontecer por diversos motivos, mas o mais provável é o seguinte:

O seu Objeto para ser testado precisa de um pequeno tempo para receber o valor e seu teste não espera esse tempo para testar e ele acaba testando um valor NULO, o que ocasiona esse erro.

  • Para resolver sugiro que use async e await para a função, assim terá certeza que o valor não é nulo!

Mas a dura verdade é que o Teste de Widget pode não ser o teste ideal para este projeto que vc está trabalhando. O teste de Widget é bem simples e um tanto quanto incompleto, sabe? Ele tem muita dificuldade de Testar pacotes e Programas que possuem algum tipo de integração( conexões com http ou qualquer comunicação fora do projeto) , então

Verifique se esse Objeto não precisa ser Mockado.

Como a maioria dos projetos já prontos, eles são complexos e um simples teste de Widget com Mock pode não ser suficiente, nosso curso é apenas introdutório e pode não ser suficiente para que você resolva seu problema, portanto sugiro que dê uma olhada nesse Tutorial Ele vai te dar uma boa ideia de como testar projetos complexos e cheios de integrações :)