Как я могу скрыть PackageManager с Robolectric
В моем приложении для Android есть простой метод, позволяющий вызвать намерение отобразить URL.
protected void launchBrowser(int id)
{
Uri uri = Uri.parse( getString( id ) );
Intent intent = new Intent( ACTION_VIEW, uri);
PackageManager packageManager = getPackageManager();
List 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();
}
}
Я использую Robolectric для модульного тестирования, но яУ меня возникли проблемы при проверке этого метода. В частности,getPackageManager()
всегда возвращает ноль. Как я могу теньPackageManager
? Я пытался создатьShadowPackageManager
и звонитbindShadowClass
, но ни один из моего кода не выполняется -getPackageManager()
всегда возвращаетсяnull
, Я также пытался скрыть контекст приложения и вернуть конкретныйStubPackageManager
, но получил те же результаты. Может я'слишком долго искал / смотрел - есть ли лучший способ для модульного тестирования этого метода?