2017-01-05 8 views
0

Я хочу издеваться ниже метода цепи с использованием EasyMock-powermock,Как насмехаться с цепным вызовом статических методов с помощью easymock-powermock?

OtherClass oc = SampleClass.getInstance().getSampleMethod(new StringReader("ABC");

деЫпзЬапс() является методом синглтона. getSampleMethod() - общедоступный метод.

Когда я пытаюсь использовать expect/andReturn, получаю null.

ответ

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); 
    } 

} 
+1

Давая ответ, предпочтительно, чтобы дать [какое-то объяснение, почему ваш ответ] (http://stackoverflow.com/help/how-to-answer) является один. –

+0

Спасибо за предложение @StephenRauch Я отредактировал свой отзыв :) – Sravya