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

[RESOLVIDO] Erro no verify de volta ContactForm para ContactList

Vi que muita gente teve esse erro, inclusive eu, mas fui no código do primeiro curso da formação: Fundamentos de Flutter: Crie o seu primeiro App, nele tem algo parecido com o que estamos utilizando nesse curso. Como resolver isso?

1 resposta
solução!

O teste está correto, ele está informando que não está sendo chamando o método findAll() (na segunda vez), isso está ocorrendo mesmo que esteja como statefull, para resolver isso eu utilizei os seguintes códigos:

contact_form.dart: No método "_save()"

void _save(Contact newContact, BuildContext context) async {
    await contactDao.save(newContact);
    Navigator.pop(context, newContact);
  }

Isso irá retornar junto do contexto o novo contato. agora vamos para:

contacts_list.dart: No Widget "FloatingActionButton"

floatingActionButton: FloatingActionButton(
        onPressed: () {
          Navigator.of(context).push(MaterialPageRoute(
              builder: (context) => ContactForm(
                contactDao: widget.contactDao)))
                    .then((newContact) {
                    if (newContact != null) {
                      setState(() {
                        widget.contactDao.findAll();
                      });
            }});
},
        child: Icon(
          Icons.add,
        ),
      ),

Isso vai validar se ele recebeu uma transação, se sim chama novamente o findAll(), caso contrário não chama. Agora no:

save_contact_flow.dart: Na volta da tela de formulário para tela de lista na função "verify()"

verify(mockContactDao.findAll()).called(2);

Se tudo estiver correto vai ser validado e o teste tera súcesso, é importante falar que o called tem o 2, pois é a segunda chamada do método findAll() na tela.

Obs: não sei o motivo no qual o teste foi válidado no curso, pode ser alguma atualização do sistema, IDE(uso vscode) entre outras coisas ou até mesmo algum erro no código. Sei que isso que demonstrei funcionou e consegui prosseguir com o curso.

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