首页 >Java >java教程 >如何使用 Mockito 部分模拟类中的方法?

如何使用 Mockito 部分模拟类中的方法?

DDD
DDD原创
2024-12-12 15:51:24388浏览

How to Partially Mock Methods in a Class Using Mockito?

如何使用 Mockito 模拟类中的特定方法

在软件测试中,模拟允许您模拟依赖项或依赖项的行为您不想直接实例化的类。 Mockito 是一个 Java 模拟框架,使您能够模拟方法并验证与它们的交互。

具体来说,您可能会遇到这样的场景:您想要模拟类的某些方法,同时保持其他方法不变。这种方法称为部分模拟。以下是使用 Mockito 实现它的方法:

// Mock the Stock class with partial mocking
Stock stock = mock(Stock.class);

// Mock specific methods
when(stock.getPrice()).thenReturn(100.00);
when(stock.getQuantity()).thenReturn(200);

// Leave 'getValue()' unmocked
// It will execute the actual Stock.getValue() calculation
when(stock.getValue()).thenCallRealMethod();

这样,只有 getPrice() 和 getQuantity() 方法将被模拟,而 getValue() 将执行其原始代码。

此外,您可以将 CALLS_REAL_METHODS 参数与Mockito.mock():

Stock MOCK_STOCK = Mockito.mock(Stock.class, CALLS_REAL_METHODS);

这会将未存根的调用委托给实际实现。

但是,需要注意的是,在您的示例中,仅模拟 getPrice() 和 getQuantity()将无法正常工作,因为 getValue() 实现取决于它们的实际返回值。相反,请考虑完全避免模拟:

// Without mocks
Stock stock = new Stock(100.00, 200);
double value = stock.getValue();

以上是如何使用 Mockito 部分模拟类中的方法?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn