Como posso sombrear o PackageManager com Robolectric
Meu aplicativo Android tem um método simples para disparar uma intenção de exibir um URL.
protected void launchBrowser(int id)
{
Uri uri = Uri.parse( getString( id ) );
Intent intent = new Intent( ACTION_VIEW, uri);
PackageManager packageManager = getPackageManager();
List<ResolveInfo> activities = packageManager.queryIntentActivities(intent, 0);
if (activities.size() > 0)
{
startActivity(intent);
}
else
{
Toast.makeText(getApplicationContext(),
"ERROR - no application to display a web page",
Toast.LENGTH_SHORT).show();
}
}
Estou usando o Robolectric para teste de unidade, mas estou com problemas para verificar esse método. Especificamente,getPackageManager()
está sempre retornando null. Como eu posso sombrear oPackageManager
? Eu tentei criar umShadowPackageManager
e chamandobindShadowClass
, mas nenhum dos meus códigos é executado -getPackageManager()
sempre retornanull
. Eu também tentei sombrear o contexto de aplicação e retornar um concretoStubPackageManager
, mas obteve os mesmos resultados. Talvez eu esteja procurando / olhando por muito tempo - existe uma maneira melhor de testar esse método?