我想使用easymock-powermock
在方法链下面进行模拟 OtherClass oc = SampleClass.getInstance().getSampleMethod(new StringReader("ABC");
getInstance()是一个单例方法。 getSampleMethod()是一个公共方法。
当我尝试使用expect / andReturn变为null时。
答案 0 :(得分:1)
我不确定您是否立即对整个方法链设定了期望,但这不是它的工作原理。您必须分别为每个方法调用设置期望值。
在您的情况下,由于第一个方法调用是静态调用,您应该使用powermock并设置期望并为其返回模拟实例。然后你应该为第二个方法调用添加期望。我已经给出了下面的示例代码。请检查它是否适用于您的情况。
@RunWith(PowerMockRunner.class)
@PrepareForTest({SampleClass.class})
public class SimpleClassTest{
@Test
public void test(){
PowerMock.mockStatic(SampleClass.class);
SampleClass sampleClassInstance = EasyMock.createMock(SampleClass);
EasyMock.expect(SampleClass.getInstance).andReturn(sampleClassInstance);
EasyMock.expect(sampleClassInstance.getSampleMethod(/*required parameter goes here*/).andReturn(/*Otherclass instance goes here*/);
PowerMock.replayAll();
EasyMock.replay(sampleClassInstance);
}
}