如何使用PowerMockito

时间:2015-07-09 23:48:13

标签: junit mockito powermock powermockito

class A {
   public B getB(){
      // somehow get argType1 and argType2
      return new B(argType1, argType2);
   }
}

class B{
   public B(Type1 t1, Type2 t2){
     // something
   }
}

我想测试A,并验证B的构造函数是否被调用argType1argType2的预期值。

我如何使用PowerMockito执行此操作?

有没有办法像这样传递argumentCaptor:

whenNew(B.class).withArguments(argType1Captor, argType2Captor).thenReturn(somemock);

如果这样做,argType1Captor将获得两个值

2 个答案:

答案 0 :(得分:4)

我这样解决了它

PowerMockito,verifyNew(B.class).withArgument(expectedArgType1, expectedArgType2)

答案 1 :(得分:0)

Dhrumil Upadhyaya,您的答案(公认的唯一答案)不能解决您提出的问题!我认为您可能想要执行以下操作:

public class MyTest {
   private ArgType argument;

   @Before
   public void setUp() throws Exception {
       MyClass c = mock(MyClass.class);

       whenNew(MyClass.class).withAnyArguments()
                             .then((Answer<MyClass>) invocationOnMock -> {
                argument = (ArgType) invocationOnMock.getArguments()[0];
                return c;
            } 
        );
    }
}

这不是一个很好的解决方案,但是它将捕获传递给构造函数的参数。与您的解决方案相比的优势在于,如果参数是DTO,则可以对其进行检查以查看其是否包含期望的值。