我有以下班級布局:
public class Service {
ServiceHelper helper;
...class methods...
}
public class ServiceHelper {
Foo foo;
Bar bar;
...class methods...
}
我正在為 Service 創建一個單元測驗,但我想將 ServiceHelper 用作“實時”類,但要模擬 ServiceHelper 內部的建構式引數。有沒有辦法通過 Mockito 實作這一目標?
uj5u.com熱心網友回復:
我認為您的示例不是一個好習慣。Unit testing應該盡可能小。單元測驗的目標是隔離程式的每個部分并顯示各個部分是正確的。
無論如何,您仍然可以嘗試這種方法。我希望它有所幫助。
public class Service {
private ServiceHelper helper;
public Service(ServiceHelper helper) {
this.helper = helper;
}
}
public class ServiceHelper {
private Foo foo;
private Bar bar;
// for unit testing only
ServiceHelper(Foo foo, Bar bar) {
this.foo = foo;
this.bar = bar;
}
}
和測驗類:
public class ServiceTest {
@Test
public void your_test() {
// arrange
Foo mockedFoo = mock(Foo.class);
Bar mockedBar = mock(Bar.class);
ServiceHelper helper = new ServiceHelper(mockedFoo, mockedBar); // the 'live' class
Service service = new Service(helper);
// act
service.doSomething();
// your assert ...
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/454210.html
