java.lang.IllegalArgumentException:尝试在jmockit中记录unmockable方法的期望

时间:2015-12-09 10:27:35

标签: java jmockit

@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和site是各自类的模拟对象。 如果我对cach.getSitesCache.get(anyInt)发表评论并添加map.get(key),则会出现同样的错误。我的问题是:

如何模拟get(int)类的HashMap方法?

此处getSitesCache()方法返回HashMap。现在通过传递密钥作为get方法的参数,我得到了一个对象。现在该对象被转换为Site对象。

如何嘲笑它?

1 个答案:

答案 0 :(得分:0)

不允许模拟HashMap;相反,测试应该从getSitesCache()返回一个真实的地图。