首页 > 解决方案 > 模拟方法的本地对象并从中读取

问题描述

我正在使用 powermckito 并尝试模拟本地对象并从中读取 API。我的实现类如下:

public class LogoutUtil {

    public static void updateState() {
        SrvcContext sc  = new SrvcContext();
        sc.setUserName("UserNAME");

    }
}

我正在尝试模拟 SrvcContext 对象并通过调用 getter 来读取用户名。这是我的测试代码:

@Test
public void updateStateTest() {
    SrvcContext svc = PowerMockito.mock(SrvcContext.class);
    LogoutUtil.updateState();
    try {
        PowerMockito.whenNew(SrvcContext.class).withNoArguments().thenReturn(svc);
    } catch (Exception e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    String userName = svc.getUserName(); //This gives null
    Assert.assertEquals("UserNAME", userName);
}

任何帮助如何做到这一点。我无法更改 LogoutUtil 类。

谢谢

标签: javajunitpowermock

解决方案


问题是该方法LogoutUtil.updateState是静态的,并且测试和模拟静态方法并不总是那么简单。但是使用 PowerMockito 你可以通过调用mockStatic方法来做到这一点:看看这里:它应该可以解决你的问题


推荐阅读