java - 如何模拟 Java 内置枚举(如 HttpStatus 及其方法)

标签 java junit enums mockito

我正在尝试使用mockito模拟HttpStatus方法

@Autowired
Handler handler;

@Mock
Request request;

@Mock
Response aAResponse;

@Mock
RestHandler restHandler

logger.info("Response's HttpStatus is2xxSuccessful is false");
    try {
        Mockito.when(restHandler.getResponse(request)).thenReturn(aAResponse);
        Mockito.when(aAResponse.getHttpStatus()).thenReturn(HttpStatus.ACCEPTED);
        Mockito.when(aAResponse.getHttpStatus().is2xxSuccessful()).thenReturn(false);
        handler.fetchDetails(notification, provider, mapping);
    } catch (Exception e) {
        logger.error("Exception  -> {}", e.getMessage());
    }

但是

aAResponse.getHttpStatus()

给我 null。如何使用 Mockito 模拟枚举值及其方法。模拟枚举值及其方法是否正确?

final Response response = restHandler.getResponse(request);

我知道响应是最终的,mockito 无法模拟最终对象,但为此我遵循了答案 https://stackoverflow.com/a/53837478/4478171

最佳答案

当你可以模拟返回枚举的方法时,为什么还要模拟枚举?

替换

Mockito.when(aAResponse.getHttpStatus().is2xxSuccessful()).thenReturn(false);

Mockito.when(aAResponse.getHttpStatus()).thenReturn(HttpStatus.NOT_FOUND);

您不希望模拟枚举返回特定值。您希望响应具有包含不成功错误代码的状态...

关于java - 如何模拟 Java 内置枚举(如 HttpStatus 及其方法),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59945382/

相关文章:

visual-studio-2010 - Azure 表存储、WCF 服务和枚举

c++ - 构造临时对象时出错,该对象的构造函数采用单个枚举参数

JAVA 子枚举声明

java - MVCPortlet : use doView method from an other method

java - 如何解决android中的这个hashmap逻辑错误?

java - Junit和Ant集成的另一个简单问题

Android Studio 说 "Empty Test Suite"for AndroidTestCase

java - 用 Java 制作标签创建器

java - 在插入表之前清理数据

grails - 如何通过模拟对象并期望一些预期结果来编写Spock单元测试