【发布时间】:2019-01-09 09:41:20
【问题描述】:
这里我有一个实现method1的A类。
class A{
public void method1(String name){
classB b = new classB();
// Some operations
b.method2(argument1);
}
}
我想捕获传递给method2 的参数,我为此编写了以下代码。
我得到了错误,因为当我验证捕获以下代码中的参数时没有调用模拟。请让我知道如何通过调用模拟来捕获传递给method2的参数来成功执行此操作
class ATest{
String name = "name";
@Before
public void setup{
class A = new class A();
class B = Mockito.mock(classB.class);
}
public void testmethod1()
{
A.method1(name);
ArgumentCaptor<String> captor = ArgumentCaptor.forClass(String.class);
Mockito.verify(B, Mockito.times(1)).method2(captor.capture());
String actual = captor.getValue();
assertEquals("some data", actual);
}
}
【问题讨论】:
-
你不能。因为
A的实例在调用method1时会创建它们自己的classB实例,所以您无权访问它。这不是可测试的设计。
标签: unit-testing junit mocking mockito