【问题标题】:Use PowerMock to mock methods chain with return value使用 PowerMock 模拟带有返回值的方法链
【发布时间】:2013-06-05 10:28:48
【问题描述】:

我想模拟以下代码:

int num = MySingelton.getInstance().getA().getB().getC();

返回一个伪造的数字。我如何使用 PowerMock 和 EasyMock\Mockito 来做到这一点?

【问题讨论】:

    标签: testing mocking testng easymock powermock


    【解决方案1】:

    是的,这是可能的。我使用 PowerMockito 为您创建了一个示例代码。

    创建一个单例类..

    public class SingletonClassUtil
    {
       private static SingletonClassUtil singletonClassUtil;
    
       private SingletonClassUtil(){}
    
       private String name;
    
       public static SingletonClassUtil getInstance()
       {
          if(singletonClassUtil!=null)
          {
              singletonClassUtil = new SingletonClassUtil();
          }
          return singletonClassUtil;
       }
    
       public String getA()
       {
          return name;
       }
    } 
    

    现在使用 PowerMock 测试该类 ..

    public class SingletonTest
    {
        public void testSingleton() throws Exception
        {
            PowerMockito.suppress(PowerMockito.constructor(SingletonClassUtil.class));
            PowerMockito.mockStatic(SingletonClassUtil.class);
            SingletonClassUtil singletonClassUtil =  PowerMockito.mock(SingletonClassUtil.class);
    
            PowerMockito.when(singletonClassUtil.getA()).thenReturn("A");
            System.out.print(singletonClassUtil.getA());
            // add your code here to access inner class methods  
        }
    }
    

    如果对你有帮助,请投票给我

    【讨论】:

      猜你喜欢
      • 2012-03-24
      • 2018-10-19
      • 1970-01-01
      • 2015-02-20
      • 1970-01-01
      • 1970-01-01
      • 2018-10-09
      • 1970-01-01
      相关资源
      最近更新 更多