【问题标题】:How to mock static method chain call using easymock-powermock?如何使用 easymock-powermock 模拟静态方法链调用?
【发布时间】:2017-05-19 17:00:29
【问题描述】:

我想使用 easymock-powermock 模拟下面的方法链,

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

getInstance() 是一个单例方法。 getSampleMethod() 是一个公共方法。

当我尝试使用 expect/andReturn 时得到 null。

【问题讨论】:

    标签: junit powermock easymock


    【解决方案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);
        }
    
    }
    

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-12-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-09
    • 2012-03-30
    相关资源
    最近更新 更多