Итак, у меня есть класс, который принимает Context
через конструктор и извлекает из него значение по умолчанию SharedPreferences
, используя:
PreferenceManager.getDefaultSharedPreferences(context)
Я тестирую этот класс и в моем модулеtest Я написал следующий код для извлечения поддельного экземпляра SharedPreferences
при вызове getSharedPreferences(String, int)
:
Context context = mock(Context.class);
SharedPreferences sharedPreferences = mock(SharedPreferences.class);
when(context.getSharedPreferences(anyString(), anyInt()))
.thenReturn(sharedPreferences);
when(sharedPreferences.getString(anyString(), nullable(String.class)))
.thenReturn(tokenManager.getToken());
Когда я запускаю тест для этого класса, он заканчивается объектом null
вместо моего издевательского экземпляра SharedPreferences.Тем не менее, если я получу экземпляр SharedPreferences
с помощью context.getSharedPreferences("stubbed", 123)
, я получу свой поддельный код SharedPreferences
.
Так почему PreferenceManager.getDefaultSharedPreferences(context)
возвращает экземпляр null
при непосредственном вызове getSharedPreferences
на моем макете Context
возвращает мой макетированный SharedPreferences
экземпляр?