gpt4 book ai didi

java - 如何对通过@JsonCreator 组成的枚举进行单元测试?

转载 作者:行者123 更新时间:2023-11-29 04:29:29 28 4
gpt4 key购买 nike

我正在使用 Jackson将 JSON 字符串反序列化为枚举。

public enum RoomType {

SHARED("shared"),
PRIVATE("private");

private String value;

RoomType(String value) {
this.value = value;
}

@JsonCreator
public static RoomType fromJson(final String jsonValue) {
for (RoomType type : values()) {
if (type.value.equals(jsonValue)) {
return type;
}
}
return null;
}

@JsonValue
@Override
public String toString() {
return value;
}

}

我想对不同的边缘情况进行单元测试:

@RunWith(JUnit4.class)
public class RoomTypeTest {

private final ObjectMapper mapper = new ObjectMapper();

@Test
public void fromJsonWithShared() throws Exception {
String json = "{\"roomType\":\"shared\"}";
RoomType type = mapper.readValue(json, RoomType.class);
assertThat(type).isEqualTo(RoomType.SHARED);
}

}

测试失败。当我调试时,我看到调用 RoomType.fromJsonjsonValuenull。似乎 Jackson 没有从 JSON 字符串中获取值。

相关例子

最佳答案

我认为 Jackson 不知道要将什么值传递给 fromJson 方法。尝试添加@JsonProperty:

@JsonCreator
public static RoomType fromJson(@JsonProperty("roomType") final String jsonValue) {
....
}

关于java - 如何对通过@JsonCreator 组成的枚举进行单元测试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44392940/

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