怎么mock new 对象的过程
时间: 2024-04-18 16:31:21 浏览: 120
js中new一个对象的过程
在使用 Mockito 进行单元测试时,你可以使用 `Mockito.mock()` 方法来模拟 `new` 对象的过程。
一种常见的方法是通过创建一个工厂类,将对象的创建过程封装在工厂方法中。然后,你可以使用 Mockito 来模拟工厂方法的返回值。
下面是一个示例:
```java
public class YourClass {
public void someMethod() {
YourObject obj = createObject();
// ...
}
protected YourObject createObject() {
return new YourObject();
}
}
public class YourObject {
// ...
}
```
在这个示例中,`YourClass` 类中的 `someMethod()` 方法调用了 `createObject()` 方法来创建 `YourObject` 对象。我们可以将 `createObject()` 方法保护起来,以便在测试中进行模拟。
然后,在单元测试中,你可以使用 Mockito 来模拟 `createObject()` 方法的返回值:
```java
import org.junit.Test;
import org.mockito.Mockito;
public class YourClassTest {
@Test
public void testSomeMethod() {
// 创建 YourClass 对象
YourClass yourClass = Mockito.spy(new YourClass());
// 模拟 createObject() 方法的返回值
YourObject mockedObject = Mockito.mock(YourObject.class);
Mockito.doReturn(mockedObject).when(yourClass).createObject();
// 调用被测试的方法
yourClass.someMethod();
// 验证某些行为
Mockito.verify(mockedObject, Mockito.times(1)).someMethod();
}
}
```
在这个示例中,我们使用 `Mockito.spy()` 方法来创建 `YourClass` 对象的模拟对象。然后,我们使用 `Mockito.mock()` 方法来创建 `YourObject` 类的模拟对象,并使用 `Mockito.doReturn().when()` 方法定义了 `createObject()` 方法的模拟返回值。
最后,我们调用被测试的方法 `someMethod()`,并使用 `Mockito.verify()` 来验证模拟对象的某些行为是否发生。
希望以上示例能够帮助你在单元测试中模拟 `new` 对象的过程。如果还有其他问题,请随时提问。
阅读全文