向会话添加属性的测试方法失败

时间:2013-12-24 08:39:15

标签: java junit mockito portlet

我正在测试一个只使用以下代码向portletsession添加属性的方法:

    @Test
    @PrepareForTest({ActionRequest.class, ActionResponse.class, LocalizedLoggerFactory.class})
    public void test_addConfigCookiesFromSession() {
        PowerMockito.mockStatic(LocalizedLoggerFactory.class);
        ActionRequest request = PowerMockito.mock(ActionRequest.class);
        PortletSession session = PowerMockito.mock(PortletSession.class);
        when(request.getPortletSession()).thenReturn(session);

        List<String> list = new ArrayList<String>();
        list.add("prueba");
        ConfigPortlet configPortlet = new ConfigPortlet();
        configPortlet.addCookiesToSession(request, list);

        assertNotNull(session.getAttribute("exemptCookiesListSession"));
    }

在addcookiestosession内部我只添加一个这样的列表:

PortletSession portletSession = request.getPortletSession();
        portletSession.setAttribute("exemptCookiesListSession", listExemptCookies);

但是当我做断言时,我在session.getattribute中有空...我做错了什么?

1 个答案:

答案 0 :(得分:0)

你的&#34;会话&#34;变量是一个模拟对象。当你打电话给&#34; setAttribute()&#34;在模拟对象上,它什么都不做。调用&#34; getAttribute()&#34;之后将无法获得您在调用&#34; setAttribute()&#34;中发送的值。

听起来你需要的是这样的东西(使用mockito的静态导入):

verify(session).setAttribute(eq("exemptCookiesListSession"), anyList());