Mockito如何thenReturn Interface接口
时间: 2024-03-05 18:54:40 浏览: 20
如果需要使用Mockito模拟一个接口并返回该接口的实例对象,可以使用`Mockito.mock()`方法创建该接口的mock对象,并使用`Mockito.when()`方法设置该mock对象的行为。
例如,假设有一个接口`MyInterface`,我们需要模拟它并在调用某个方法时返回该接口的实例对象,可以按照以下步骤进行:
1. 使用`Mockito.mock()`方法创建该接口的mock对象:
```java
MyInterface myInterfaceMock = Mockito.mock(MyInterface.class);
```
2. 使用`Mockito.when()`方法设置该mock对象的行为,使其在调用某个方法时返回该接口的实例对象:
```java
Mockito.when(myInterfaceMock.someMethod()).thenReturn(Mockito.mock(MyInterface.class));
```
上述代码中,我们使用`Mockito.when()`方法设置`myInterfaceMock`对象在调用`someMethod()`方法时返回一个新的接口`MyInterface`的mock对象。
注意,这里返回的是新的mock对象,而不是原始的接口实现类的实例对象。如果需要返回一个具体的接口实现类的实例对象,可以使用`Mockito.mock()`方法创建该实现类的mock对象,并在上述代码中返回该mock对象即可。
相关问题
Mockito模拟返回Interface
Mockito可以模拟返回一个接口的实例对象。假设有一个接口`MyInterface`,我们可以使用Mockito的`mock()`方法创建一个该接口的实例对象,如下所示:
```java
MyInterface myInterface = Mockito.mock(MyInterface.class);
```
可以在测试中使用该实例对象,并设置它的行为,例如:
```java
Mockito.when(myInterface.someMethod()).thenReturn("mocked result");
```
这将模拟`MyInterface`接口中的`someMethod()`方法,并将其返回值设置为`"mocked result"`。
junit mock接口类
使用JUnit和Mockito进行单元测试时,有时需要模拟接口类。以下是一个简单的示例:
假设我们有一个接口类 `Calculator`,它有两个方法 `add` 和 `subtract`:
```java
public interface Calculator {
int add(int a, int b);
int subtract(int a, int b);
}
```
现在我们想测试一个使用 `Calculator` 接口的类,但是我们不想实际调用 `add` 和 `subtract` 方法,因为它们可能会调用其他依赖项并引起副作用。这时候就需要使用Mockito来模拟 `Calculator` 接口。
首先,我们需要创建一个模拟对象:
```java
Calculator calculator = Mockito.mock(Calculator.class);
```
然后,我们可以使用 `when` 方法设置当调用 `add` 方法时返回一个特定的值:
```java
when(calculator.add(2, 3)).thenReturn(5);
```
我们还可以使用 `verify` 方法验证方法是否被调用:
```java
verify(calculator).add(2, 3);
```
最后,我们可以在测试中使用模拟对象来测试我们的代码:
```java
@Test
public void testCalculator() {
Calculator calculator = Mockito.mock(Calculator.class);
when(calculator.add(2, 3)).thenReturn(5);
int result = myClass.calculate(calculator);
assertEquals(5, result);
verify(calculator).add(2, 3);
}
```
这是一个简单的例子,Mockito提供了更多的功能和选项,可以用于更复杂的测试场景。