0
所以我是Mockito新來測試外牆。所以基本上我想檢查一下,如果服務的方法被調用一次。Mockito - 訪問驗證的私人/自動化字段()
這裏將是一個簡單的例子
我的服務
public class Service {
public int myMethod(int index, int number) {
if (index<4){
index = index + number;
}
return index;
}
}
我的門面:
public class Facade {
private Service service;
public void method(){
int i = service.myMethod(4, 2);
}
}
,最後我的測試:
public class FacadeTest {
@InjectMocks
private Facade classUnderTest;
@Mock (name="service")
private Service service;
@Before
public void setUp(){
MockitoAnnotations.initMocks(this);
}
@Test
public void test(){
verify(classUnderTest, times(1)).service.myMethod(4,2);
}
}
我知道這是可能的使用Get ter/Setter-methods在我的Facade中返回服務,但我想這樣做,而不這樣做。
按照我想要的方式,是否可以不對門面做任何改變?
是否有區別,當我有一個Spring項目,並使用@Autowired在門面內的服務變量?
謝謝!
用你的測試方法用'service'替換'classUnderTest'並完成。您只能驗證模擬上的調用而不是測試中的類(因爲不受Mockito控制)。 –
你不需要任何getter,因爲正面注入和使用的服務是'private Service服務;'。所以你有權訪問它,並且可以驗證它的方法已被調用。 –