测试枚举的一般 DynamoDB 编组
Testing general DynamoDBMarshalling for enums
我有一个与 this 非常相似的 DynamoDBMarsheller。看起来像:
public class EnumMarshaller implements DynamoDBMarshaller<Enum> {
@Override
public String marshall(Enum getterReturnResult) {
return getterReturnResult.name();
}
@Override
public Enum unmarshall(Class<Enum> clazz, String obj) {
return Enum.valueOf(clazz, obj);
}
}
现在我一直在尝试测试它。我尝试按照以下方式做一些事情(其中 Status 是一个普通的枚举):
@Test
public void shouldTurnStringToEnum() {
final Class<? extends Enum> enumType = Status.class;
assertThat(marshaller.unmarshall(enumType, "failed"), is(marshaller.marshall(Status.FAILED)));
}
但是我无法正确获取枚举类型变量。这可能吗?
当你
EnumMarshaller marshaller = new EnumMarshaller();
如果传递 enumType,Java 将给出编译时错误,因为它是 Enum.class 类型作为参数。
试试
DynamoDBMarshaller marshaller = new EnumMarshaller();
这应该有效。
我有一个与 this 非常相似的 DynamoDBMarsheller。看起来像:
public class EnumMarshaller implements DynamoDBMarshaller<Enum> {
@Override
public String marshall(Enum getterReturnResult) {
return getterReturnResult.name();
}
@Override
public Enum unmarshall(Class<Enum> clazz, String obj) {
return Enum.valueOf(clazz, obj);
}
}
现在我一直在尝试测试它。我尝试按照以下方式做一些事情(其中 Status 是一个普通的枚举):
@Test
public void shouldTurnStringToEnum() {
final Class<? extends Enum> enumType = Status.class;
assertThat(marshaller.unmarshall(enumType, "failed"), is(marshaller.marshall(Status.FAILED)));
}
但是我无法正确获取枚举类型变量。这可能吗?
当你
EnumMarshaller marshaller = new EnumMarshaller();
如果传递 enumType,Java 将给出编译时错误,因为它是 Enum.class 类型作为参数。
试试
DynamoDBMarshaller marshaller = new EnumMarshaller();
这应该有效。