您的示例代码中b
应该包含什么?c
z
通常你模拟你的测试方法正在调用的每个其他对象,或者那些被调用的对象需要,fea.method1()
调用可以像这样模拟:
// Arrange or given
Z sut = new Z();
Object method1RetValue = new Object();
A mockedA = mock(A.class);
Mockito.when(mockedA.method1()).thenReturn(method1RetValue);
// set the mocked version of A as a member of Z
// use one of the following instructions therefore:
sut.a = mockedA;
sut.setA(mockedA);
Whitebox.setInternalState(sut, "a", mockedA);
// Act or when
Object ret = sut.method2();
// Assert or then
assertThat(ret, is(equalTo(...)));
作为a
您的测试类的成员,您需要首先设置模拟版本,或者通过直接字段分配、setter-methods 或通过Whitebox.setInternalState(...)
上面示例代码中描述的方式。
请注意,模拟方法当前返回一个对象,您可以返回该方法返回的任何内容。但是由于您的示例缺少真实类型,因此我在这里只使用了一个对象。