Tenho uma classe utilitária que depende do contexto para traduzir a saída. Algo como:
static String doSomeLogicAndTranslate(String firstArg, BuildContext context) {
//...
return AppLocalizations.of(context)!.someKey;
}
Agora, quero ser capaz de escrever alguns testes de unidade para esta classe, mas como o segundo argumento é o contexto, estou tendo dificuldade para fazer isso.
O que tentei até agora:
Zombar de um BuildContext com Mockito ( conforme descrito aqui ) e passar isso como o segundo argumento --> Não funciona, pois dentro do arquivo localations.dart ele retorna nulo aqui
static T? of<T>(BuildContext context, Type type) { final _LocalizationsScope? scope = context.dependOnInheritedWidgetOfExactType<_LocalizationsScope>(); /// Scope is null here return scope?.localizationsState.resourcesFor<T?>(type); }
Tentei procurar outras soluções para isso, mas não encontrei nada substancial. Parece que deveria ser bem direto, mas não é.
Minha primeira sugestão seria remover
BuildContext
completamente a dependência de passandoAppLocalizations
diretamente para sua função:Se isso não for possível por algum motivo, você pode usar
testWidgets
para configurar uma árvore de widgets mínima e recuperar um contexto de compilação válido para o resto do seu teste a partir daí: