@Test
public void verifyAttribute_getEnforceUserGroup_True()
{
boolean flag= false;
new MockUp<DataCache>()
{
@Mock
public HashMap getSitesCache()
{
return map;
}
};
new Expectations()
{
{
cach.getSitesCache().get(anyInt);
returns(site);
site.getEnforceUserGroups();
returns(1);
}
};
try
{
flag =enforceObj.verifyAttribute();
assertEquals(true, flag);
}
catch (Exception e)
{
e.printStackTrace();
}
}
Я не могу издеваться этот get(int key)
метод HashMap
класса. Кэч и сайт являются издеваемыми объектами их соответствующих классов. Если я прокомментирую cach.getSitesCache.get(anyInt)
и добавлю map.get(key)
, он дает ту же ошибку. Мой вопрос:java.lang.IllegalArgumentException: Пытались рекорд ожидания на unmockable метода в JMockit
как насмехаться get(int)
метод HashMap
класс?
Здесь getSitesCache()
метод возвращает HashMap
. Теперь, передав ключ в качестве аргумента метода get, я получил объект. Теперь объект преобразуется в объект сайта.
Как издеваться над этим?
Не могли бы вы уточнить? Почему это не разрешено? –
Потому что насмешка 'HashMap' всегда плохая идея. Значит, вы можете написать гораздо лучший тест *, не делая этого. Это вопрос XY, который не показывает актуальную проблему, которая должна быть решена. Вместо этого следует сосредоточиться на том, что нужно протестировать, не принимая конкретного решения. –
Хорошо, поэтому сам JMockit не мешает java.util.HashMap, вы просто заявляете, что это не очень хорошая идея. Для справки, с тех пор я понял, как издеваться над HashMap с JMockit, поэтому можно действительно придумать встроенные классы Java. –