java - 如何在 java/groovy 中模拟方法?

标签 java groovy junit mocking mockito

我有两种方法:

protected List<CustomObject> getSortedOrderItems() {
    List<CustomObject> internalList = new ArrayList<>();
    //some operations
    return internalList;
}

public CustomObject getIdentifire() {
    CustomObject correctIdentifire = null;
    List<CustomObject> items = getSortedOrderItems();
    //some opearations on items
    return correctIdentifire;
}

对于我的 Junit 测试,我需要模拟 List<CustomObject> items = getSortedItems();作为我的自定义对象的列表

我不知道如何开始。我知道如何在正常情况下使用 Mockito,但从未做过这样的事情。 有什么帮助吗?

最佳答案

在 groovy 中,您可以简单地使用元编程直接模拟任何内容:

class SomeClass {
  protected List<CustomObject> getSortedOrderItems() {
    List<CustomObject> internalList = new ArrayList<>();
    //some operations
    return internalList;
  }
}

@groovy.transform.TupleConstructor
class CustomObject { int a }

// test setup:
SomeClass.metaClass.getSortedOrderItems = {-> [ new CustomObject(1), new CustomObject(2) ] }

// test
assert [ 1, 2 ] == new SomeClass().sortedOrderItems*.a

关于java - 如何在 java/groovy 中模拟方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58917449/

相关文章:

java - 有什么方法可以禁用 mockito 的记录调用

java - 使用mockito调用Service类的嵌套方法时出现NullPointerException

java - 可以修改 Eclipse 的 Organize Import (ctrl+shift+o) 命令对静态导入的处理吗?

grails - 如何使用Groovy返回JDBC ResultSet

java - Jmeter变量同步

java - Groovy 中的显式输入 : sometimes or never?

svn - Grails 应用程序和版本控制

java - windows环境下删除文件失败

java - 检测到 JVM 正在关闭

java - 25个类对象的数组