如何在Mockito中为不同的参数存根具有不同返回值的一种方法?

问题描述

我正在尝试在databaseService中对saveRecord(Record newRecord)方法进行存根,如果newRecord在field1属性中的值为“ OldValue”,则引发异常,如果field1属性中的值为“,则返回Record对象” UpdatedValue”。

public Record updateRecord(Record existingRecord) {
        try {
            if(existingRecord!= null) {
                existingRecord.setField1("UpdatedValue");
                Record newRecord = databaseService.saveRecord(existingRecord);
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        
        return newRecord;
    }

我尝试像这样对方法进行存根...

        Record existingRecord = new Record();
        existingRecord.setField1("OldValue");

        Record newRecord = new Record();
        newRecord.setField1("UpdatedValue");

        Exception exception = new Exception("Failed");

        doThrow(exception).when(databaseService).saveRecord(existingRecord);
        doReturn(newRecord).when(databaseService).saveRecord(newRecord);

我也尝试过:

       doAnswer(invocation -> {
            Object argument = invocation.getArguments()[0];
            if (argument.equals(existingRecord)) {
                throw exception;
            } else if (argument.equals(newRecord)) {
                return newRecord;
            } 
            throw new InvalidUseOfMatchersException(
                String.format("Argument %s does not match",argument)
            );
        }).when(databaseService).saveRecord(any(Record.class));

没有运气。有什么想法吗?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...