gpt4 book ai didi

java - Mockito:检测何时调用私有(private)资源上的方法

转载 作者:行者123 更新时间:2023-12-01 20:20:47 26 4
gpt4 key购买 nike

我需要为这个类编写一个测试。我需要验证当列表的大小恰好为 2 时,会调用 modelService.save。是否也可以获取对象productModel?

我不知道从哪里开始。

public class SoldMaterialPrepareInterceptor implements PrepareInterceptor<SoldMaterialModel> {

@Resource
private ModelService modelService;

@Override
public void onPrepare(SoldMaterialModel soldMaterialModel, InterceptorContext interceptorContext) throws InterceptorException {
setSAPSubstance(soldMaterialModel);
}

private void setSAPSubstance(SoldMaterialModel soldMaterialModel) {
ProductModel productModel = soldMaterialModel.getBaseProduct();
Set superCatagoriesList = [....]// gets the list somehow
if (superCatagoriesList.size() == 2) {
productModel.setSupercategories(superCatagoriesList);
modelService.save(productModel);
}
}
}

最佳答案

modelService 字段是私有(private)的不是问题,它是一个类字段,通常需要私有(private)访问修饰符。您需要检查其 save() 方法的调用,该方法又不能是私有(private)的,否则无法从拦截器类中调用它。

对于测试,假设 superCatagoriesList(实际上是一个 Set 而不是 List,也应该是通用的)从 sellMaterialModel 参数直接或间接(例如通过 ProductModel)获取其内容,您的任务是编写一个测试,它用这样的值填充 sellMaterialModel ,以便 superCatagoriesList.size() 将为 2,然后您可以验证 modelService.save() 方法是否被调用一次,例如类似的东西

Mockito.verify(modelService).save(any(ProductModel.class));

关于java - Mockito:检测何时调用私有(private)资源上的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44783775/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com