Как смоделировать приватный статический java.util.prefs.Preferences в тестовом классе с локальным классом ejp без состояния - PullRequest
0 голосов
/ 26 октября 2018

Я хочу написать тестовый класс, используя mockito для тестирования локального ejb без состояния с интерфейсом.

    public class SampleHandler{

        private static final Logger logger = Logger.getLogger(TLDHandler.class);

        @EJB
        private IMsAgent msAgent;

        public void setMsAgent(IMsAgent msAgent) {
            this.msAgent = msAgent;
        }

    public infoAvailability checkInfoAvailable(String sample){
        final URI url = msAgent.buildUrl(API_PREPEND_URL + sample + "/check");    
    }
}

    @Stateless
    @Local({IMsAgent.class})
        public class MsAgentImpl implements IMsTokenAgent {

        private static final String API_BASE_URL_PROPERTY_NAME = "API_BASE_URL";
        private static final String DEFAULT_API_BASE_URL = "https://stage.url.com/v1";
        private static Preferences preferences = Preferences.systemNodeForPackage(MsAgentImpl.class);

        @Override
        public URI getBaseUrl() {
            return URI.create(preferences.get(API_BASE_URL_PROPERTY_NAME, DEFAULT_API_BASE_URL));
        }
    }

Мой тестовый класс

@RunWith(MockitoJUnitRunner.class)
public class sampleTest {

    @Mock
    IMsAgent msAgent;

    @InjectMocks
    private SampleHandler sampleHandler = new SampleHandler();

    @Before
    public void setUp() {
      sampleHandler.setMsAgent(Mockito.mock(MsAgentImpl.class));
    }

    @Test
    public void checkInfoTest() throws Exception {
  final infoAvailability response = sampleHandler.checkInfoAvailable("sample");
    }
}

Когда я запускаю метод checkInfoTest из класса sampleTest, управление переходит в класс SampleHandler.В этом классе переменная url всегда возвращает нулевое значение.После отладки мой код никогда не отправляется в метод MsAgentImpl.getBaseUrl.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...