2016-02-02 2 views
0

Я хочу высмеять объект singleton? кажется, что это невозможно в scalamock-3Как я могу издеваться над объектом singleton (scala 2.7.11)?

Я обнаружил, что EasyMock и powerMock могут издеваться одноплодный объектом (от https://github.com/fabura/scala-MockStaticObjects)

Однако, я не могу получить эту работу? Любые идеи?

+0

зачем вам это нужно? Какую проблему ты пытаешься решить? – maks

+0

У меня есть объект singleton базы данных, и я хочу высмеять этого менеджера баз данных. – myregister0618

+2

Не было бы лучше создать признак, который описывает операцию db и реализовать этот признак в объекте singleton? Таким образом, вы можете издеваться над этой чертой – maks

ответ

0

Если объект singleton имеет статический метод .getInstance, его довольно легко высмеять.

Вам нужно сделать следующее в верхней части тестового класса

@RunWith(PowerMockRunner.class) @PrepareForTest(Singleton.class)

затем дразнить одноплодную

mockStatic(Singleton.class); Singleton mockSingleton = mock(Singleton.class); when(Singleton.getInstance()).thenReturn(mockSingleton);

любых значения, которые вы хотите иметь возвращаемый одноплодный полагаю, что вам нужно установить до «когда» Пример: when(mockSingleton.toString()).thenReturn("I'm a mock");

Смежные вопросы