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
的构造函数是否被调用argType1
和argType2
的预期值。
我如何使用PowerMockito执行此操作?
有没有办法像这样传递argumentCaptor:
whenNew(B.class).withArguments(argType1Captor, argType2Captor).thenReturn(somemock);
如果这样做,argType1Captor
将获得两个值
答案 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,则可以对其进行检查以查看其是否包含期望的值。