我已经查看了与此类似的其他问题,但他们没有这个确切的用例。
如果我有以下代码:
private static final String SOME_CONSANT = SomeStaticClass.getString();
我如何去模拟它,以便它不总是返回空指针异常?我已经尝试过使用Whitebox.setInternalState,但只有当静态方法没有设置值时,它才会起作用。我也尝试过如here概述的反思,但没有成功。
我认为这是因为静态方法没有被模拟,所以返回值总是为null,但使用以下内容似乎也不起作用。
PowerMockito.mockStatic(SomeStaticClass.class);
when(SomeStaticClass.getString(Mockito.anyString())).thenReturn("test");
Whitebox.setInternalState(ClassUnderTest.class, "SOME_CONSANT", "value");
我很茫然。感谢任何帮助。
答案 0 :(得分:0)
我认为你的主要问题是你试图模仿不同的方法。
使用此代码when(SomeStaticClass.getString(Mockito.anyString())).thenReturn("test");
,您可以模拟方法SomeStaticClass.getString(String parameter)
,但是,在您的原始代码中,您拥有SomeStaticClass.getString()
。