2015-03-12 2 views
0

я следующий способ для проверки:Как проверить, что статический метод был вызван точными аргументами?

public static Map<String, CrxEntity> getCrxEntitiesByMixin(Session readSession, String rootPath, SupportedLocale locale, String mixin, String idPropertyName, Set<String> propertyNamesToStore) throws RepositoryException { 
     return getCrxEntitiesByMixin(readSession, rootPath, locale, mixin, idPropertyName, propertyNamesToStore, null, false); 
    } 

После метода вызова другой публичный метод, таким образом, я должен испытать только то, что аргументы, переданные должным образом.

Я написал следующий код:

@Test 
    public void getCrxEntitiesByMixinTest() throws RepositoryException { 
     PowerMockito.mockStatic(StaticUtils.class); 

     when(StaticUtils.getCrxEntitiesByMixin(any(Session.class),anyString(),any(SupportedLocale.class),anyString(),anyString(),anySet(),anyList(),anyBoolean())).thenReturn(null); 

     StaticUtils.getCrxEntitiesByMixin(sessionMock, "rootPath", SupportedLocale.EN, "mixin", "idPropName", Sets.<String>newHashSet()); 

     verify(StaticUtils.getCrxEntitiesByMixin(eq(sessionMock), eq("rootPath"), eq(SupportedLocale.EN), eq("mixin"), eq("idPropName"), eq(Sets.<String>newHashSet()), eq(Lists.<String>newArrayList()), eq(false))); 
    } 

я вижу следующее сообщение об ошибке:

org.mockito.exceptions.misusing.NullInsteadOfMockException: 
Argument passed to verify() should be a mock but is null! 
Examples of correct verifications: 
    verify(mock).someMethod(); 
    verify(mock, times(10)).someMethod(); 
    verify(mock, atLeastOnce()).someMethod(); 
Also, if you use @Mock annotation don't miss initMocks() 

Как решить мою проблему?

+0

Я думаю, что ошибка достаточно ясна: вы передаете нуль в то время как проверить() ожидает издеваться. Я что-то упускаю? –

+0

Можете ли вы посоветовать, как переписать код? Я думаю, что идея понятна – gstackoverflow

ответ

0

Я нашел ответ. Powermockito имеет очень запутанный синтаксис для этого:

PowerMockito.verifyStatic(); 
StaticUtils.getCrxEntitiesByMixin(eq(sessionMock), eq("rootPath"), eq(SupportedLocale.EN), eq("mixin"), eq("idPropName"), eq(Sets.<String>newHashSet()), eq((List<String>)null), eq(false)); 

полный пример: https://gist.github.com/ThoMo/3916072

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